Gitea v Dockeru s daty na Synology

Gitea je self-hostovaná varianta Bitbucketu nebo GitHubu. V následujícím krátkém návodu se podíváme jak nainstalovat Giteu pomocí Dockeru a ukládat data na Synology NAS.

Prerekvizity

  • Nainstalovaný a nastavený Docker
  • Nainstalovaný a nastavený Synology NAS

Myšlenka

Pro spuštění Gitea serveru použijeme docker compose. Gitea bude používat PostgreSQL databázi. Pro ukládání dat jak pro Giteu, tak i pro Postgres, použijeme docker volumes. Docker volumes nebudou lokální, ale přes protokol NFS budou směřovat na Synology NAS.

Pro potřeby tutoriálu bude mít server IP adresu 192.168.10.1 a Synology NAS 192.168.10.2.

Nastavení Synology

Ovládací panel > Souborové služby > NFS povolte službu NFS.

Ovládací panel > Sdílená složka > Vytvoření sdílené složky. Název docker-volumes. Nepřiřazujeme oprávnění pro uživatele nebo skupiny.

Klikneme na složku docker-volumes a zvolíme upravit. Poté Oprávnění NFS. Klikneme na tlačítko Vytvořit. Do pole Název hostitele nebo IP adresa vložíme IP adresu našeho serveru, tedy 192.168.10.1. Tím umožníme našemu serveru přístup k této složce. Dále nastavíme:

  • Oprávnění: Čtení/Zápis
  • Squash: Žádné mapování
  • Zabezpečení: sys
  • Povolit asynchronní
  • Povolit připojení z portů bez oprávnění (porty vyšší než 1024)
  • Umožňuje uživatelům přístup k připojeným podsložkám

A uložíme.

Poté otevřeme File Station a v naší složce docker-volumes vytvoříme následující podsložky:

  • gitea-data
  • gitea-postgres

To je na Synology vše.

docker-compose.yaml

Konfigurační soubor vytvoří síť gitea kde na sebe uvidí kontejnery gitea a gitea-db. Vytvoří dva volumes a pomocí protokolu NFS je nasměruje na námi sdílenou složku v Synology NAS.

Docker-compose soubor můžeme spustit pomocí docker-compose up -d. Pokud máte na serveru nainstalovaný a spuštěný Portainer, tak jde docker-compose konfigurace spustit jako stack.

Webové rozhraní poté bude přístupné na http://192.168.10.1:3000.

networks:
  gitea:

volumes:
  gitea-data:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.1.251,rw
      device: ":/volume1/docker-volumes/gitea-data"

  gitea-postgres:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.1.251,rw
      device: ":/volume1/docker-volumes/gitea-postgres"

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=gitea-db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=supersecretpassword
    restart: always
    networks:
      - gitea
    volumes:
      - gitea-data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - gitea-db

  gitea-db:
    image: postgres:16
    container_name: gitea-db
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=supersecretpassword
      - POSTGRES_DB=gitea
    networks:
      - gitea
    volumes:
      - gitea-postgres:/var/lib/postgresql/data

Loading