4.7 KiB
4.7 KiB
Контекст
- Задача: Настройка домашнего сервера для театра на мини-ПК
- ОС: Ubuntu server
- Железо: двухъядерный процессор, ОЗУ 6ГБ, 128 ГБ eMMC, внешний USB-диск на 2 ТБ
- Стек: Docker, Filebrowser (облако), Gitea, Caddy (HTTPS reverse proxy), UFW, fail2ban, SSH;
Диски
- eMMC: ext4;
- usb-HDD:
/dev/sda1, файловая система EXT4, примонтирован по UUID, с nofail в/mnt/drive2T, отключено резервирование места (tune2fs -m 0), настроен сон диска черезhd-idle.
Права доступа (Permissions)
- Выделенная группа
storage. Основной пользователь (songbird) добавлен в эту группу. - Каталог хранения
/mnt/drive2T: Настроены жесткие права ACL (setfacl) и установлен SGID-бит (chmod g+s), чтобы всё внутри диска автоматически наследовало владельца и полные права (rwx) группыstorage.
Службы
- Зависимости Systemd: Служба
docker.serviceмодифицирована: контейнеры строго после внешнего диска/mnt/drive2T(RequiresMountsFor/After) - Ротация логов: автоматическая ротация логов контейнеров через
logrotate(/etc/logrotate.d/....), чтобы не забивать emmc.
Сеть
- IP: белый статический, DuckDNS обновляется вручную, домен
songbird-theatre.duckdns.org - Брандмауэр UFW: По умолчанию
deny incoming,allow outgoing. Открыты порты:22/tcp(SSH) и443/tcp(HTTPS) - Fail2ban:
sshd: атаки на SSH (/etc/fail2ban/jail.d/sshd.conf)infra-filebrowserиinfra-gitea: фильтр/etc/fail2ban/filter.d/infra-filebrowser.localдля логов Caddy и блокировки попыток подбора паролей к Filebrowser и Gitearecidive: бан рецидивистов
- filebrowser на
songbird-theatre.duckdns.org, gitea наgit.songbird-theatre.duckdns.org
Доступ
- SSH: Вход по паролю
- PermitRootLogin: no
- AllowUsers: songbird
Docker
Приложения развернуты в связке через Docker Compose в ~/docker/infra/.
- caddy-proxy: (
cpus: 0.45,memory: 250M)HTTPS:443, логи в~/docker/infra/conf/, user root- настройки прокси и логирования:
~/docker/infra/conf/Caddyfile; - файл настроек:
~/docker/infra/docker-compose.yml;
- настройки прокси и логирования:
- filebrowser-quantum: (
cpus: 1.5,memory: 4500M) Работает за прокси Caddy. Внутренний порт80за брандмауэром. Лог в~/docker/infra/data/filebrowser.log, работает от имени uid=1000 songbird.- конфиг:
~/docker/infra/data/config.yaml;
- конфиг:
- gitea: (
cpus: 1.5,memory: 2500M) Работает за прокси Caddy. Внутренний порт3000за брандмауэром. Лог в~/docker/infra/conf/caddy-git.log, работает от имени uid=1000 songbird.- конфиг:
~/docker/infra/gitea/gitea/conf/app.ini;
- конфиг:
Обновления unattended-upgrades.
Gitea
-
LFS:
MAX_CREATION_FILE_SIZE = 20971520,/mnt/drive2T/gitea/lfs:/data/git/lfsDISABLE_SSH = true
-
Организация
songbird_theatre, репозитории:- именуются
[проект]-[тип], напримерtheatre-design,lesmiserables-design,lesmiserables-music, система тегов - в
ReadMeнавигация
- именуются
-
Нюансы:
DISABLED_REPO_UNITS = repo.packeges, repo.actions,DEFAULT_REPO_UNITS = repo.code, repo.issues, repo.pulls, repo.projects, repo.releases,[actions] ENABLED = false [packages] ENABLED = false
Требования к ии
Не бойся критиковать решения. Используй максимально проверенные профессиональные с точки зрения архитектуры подходы. Поясняй все команды.
Проверяй все предложения по документации.
Вход по паролю в ssh необходимость. Резервное копирование делается вручную