Compare commits

...

8 Commits

Author SHA1 Message Date
a150d7fddd Update gitignore 2026-02-12 12:28:58 +04:00
ec5fb34b03 merge 2026-02-12 12:27:46 +04:00
f3d947db93 Fix memos 2026-02-12 12:26:53 +04:00
696321ecb8 Update gitignore 2026-02-12 12:25:42 +04:00
b139c26ad6 Update 2026-02-12 12:25:42 +04:00
10876634ec Merge branch 'main' of https://github.com/StepanovPlaton/HomeServerServices 2026-02-11 18:18:34 +04:00
396ef88209 fixes 2026-02-11 18:18:30 +04:00
2fb783d327 Fixes 2026-02-11 18:18:04 +04:00
11 changed files with 119 additions and 45 deletions

10
.gitignore vendored
View File

@@ -18,8 +18,14 @@ gitea/config/*
matrix/data/*
matrix/db
cloud/filebrowser.db
cloud/db
cloud/data
cloud/config
memos
disk/filebrowser.db
memos/memos/*.db
memos/memos/*.db-wal
memos/memos/*.db-shm
!.keep

View File

@@ -46,7 +46,7 @@
- Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru)
- **Git-сервер Gitea** для хостинга репозиториев
- **FileBrowser** — веб-интерфейс для управления файлами через браузер
- **Matrix Synapse** — собственный сервер для мессенджера Matrix с веб-клиентом Element
- **Matrix Synapse** — собственный сервер для мессенджера Matrix с веб-клиентом Element и административной панелью
- Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью **AdGuard Home**
- Управление контейнерами через **Portainer**
- Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигурации

View File

@@ -1,5 +1,9 @@
SHARED_FOLDER=/path/to/folder
USER_ID=1000
GROUP_ID=1000
ADMIN_USER=admin
ADMIN_PASSWORD=password # Минимальная длинна 12 символов
NEXTCLOUD_DATABASE=nextcloud-db
DATABASE_USER=nextcloud
DATABASE_PASSWORD=password
DATABASE_ROOT_PASSWORD=another_password
PATH_TO_FOLDER=/path/to/folder/
NEXTCLOUD_ADMIN=admin
NEXTCLOUD_PASSWORD=password
NEXTCLOUD_DOMAIN=cloud.domain.ru

View File

@@ -1,40 +1,55 @@
services:
filebrowser:
image: docker.io/filebrowser/filebrowser:latest
container_name: filebrowser
nextcloud-db:
image: docker.io/library/mariadb:11
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
container_name: nextcloud-db
volumes:
# Папка с вашими файлами (замените /path/to/your/files на реальный путь)
- ${SHARED_FOLDER}:/srv
# База данных настроек и пользователей
- ./filebrowser.db:/database/filebrowser.db
# (Опционально) Конфигурационный файл
# - ./settings.json:/config/settings.json
- ./db:/var/lib/mysql:z
environment:
- PUID=${USER_ID:?}
- PGID=${GROUP_ID:?}
entrypoint: ["/bin/sh", "-c"]
command:
- |
if [ ! -s /database/filebrowser.db ]; then
filebrowser config init --database /database/filebrowser.db
filebrowser config set --auth.method=json --database /database/filebrowser.db
fi
filebrowser config set --root /srv --database /database/filebrowser.db
filebrowser users add ${ADMIN_USER:?} ${ADMIN_PASSWORD:?} --perm.admin --scope "." --database /database/filebrowser.db || \
filebrowser users update ${ADMIN_USER:?} --password ${ADMIN_PASSWORD:?} --scope "." --database /database/filebrowser.db
filebrowser --database /database/filebrowser.db --address 0.0.0.0 --port 8080 --root /srv
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
reservations:
memory: 256M
- MARIADB_DATABASE=${NEXTCLOUD_DATABASE:?}
- MARIADB_USER=${DATABASE_USER:?}
- MARIADB_PASSWORD=${DATABASE_PASSWORD:?}
- MARIADB_ROOT_PASSWORD=${DATABASE_ROOT_PASSWORD:?}
networks:
- private_cloud_network
nextcloud-redis:
image: docker.io/library/redis:alpine
restart: always
container_name: nextcloud-redis
networks:
- private_cloud_network
nextcloud:
image: docker.io/library/nextcloud:latest
restart: always
container_name: nextcloud
volumes:
- ${PATH_TO_FOLDER:?}:/var/www/external_storage:z
- ./data:/var/www/html/data:z
- ./config:/var/www/html/config:z
environment:
- MYSQL_PASSWORD=${DATABASE_PASSWORD:?}
- MYSQL_DATABASE=${NEXTCLOUD_DATABASE:?}
- MYSQL_USER=${DATABASE_USER:?}
- MYSQL_HOST=nextcloud-db
- REDIS_HOST=nextcloud-redis
- NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN:?}
- NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_PASSWORD:?}
- NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN:?}
depends_on:
- nextcloud-db
- nextcloud-redis
networks:
- cloud_network
- private_cloud_network
networks:
cloud_network:
name: cloud_network
driver: bridge
private_cloud_network:
name: private_cloud_network
driver: bridge

5
disk/.env.example Normal file
View File

@@ -0,0 +1,5 @@
SHARED_FOLDER=/path/to/folder
USER_ID=1000
GROUP_ID=1000
ADMIN_USER=admin
ADMIN_PASSWORD=password # Минимальная длинна 12 символов

40
disk/docker-compose.yml Normal file
View File

@@ -0,0 +1,40 @@
services:
filebrowser:
image: docker.io/filebrowser/filebrowser:latest
container_name: filebrowser
restart: always
volumes:
# Папка с вашими файлами (замените /path/to/your/files на реальный путь)
- ${SHARED_FOLDER}:/srv
# База данных настроек и пользователей
- ./filebrowser.db:/database/filebrowser.db
# (Опционально) Конфигурационный файл
# - ./settings.json:/config/settings.json
environment:
- PUID=${USER_ID:?}
- PGID=${GROUP_ID:?}
entrypoint: ["/bin/sh", "-c"]
command:
- |
if [ ! -s /database/filebrowser.db ]; then
filebrowser config init --database /database/filebrowser.db
filebrowser config set --auth.method=json --database /database/filebrowser.db
fi
filebrowser config set --root /srv --database /database/filebrowser.db
filebrowser users add ${ADMIN_USER:?} ${ADMIN_PASSWORD:?} --perm.admin --scope "." --database /database/filebrowser.db || \
filebrowser users update ${ADMIN_USER:?} --password ${ADMIN_PASSWORD:?} --scope "." --database /database/filebrowser.db
filebrowser --database /database/filebrowser.db --address 0.0.0.0 --port 8080 --root /srv
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
reservations:
memory: 256M
networks:
- disk_network
networks:
disk_network:
name: disk_network
driver: bridge

Binary file not shown.

Binary file not shown.

View File

@@ -23,10 +23,11 @@ services:
networks:
- proxy_network
- gitea_network
- cloud_network
- disk_network
- matrix_network
- memos_network
- homepage_network
- cloud_network
certbot:
image: docker.io/certbot/certbot
@@ -73,9 +74,9 @@ networks:
gitea_network:
external: true
name: gitea_network
cloud_network:
disk_network:
external: true
name: cloud_network
name: disk_network
matrix_network:
external: true
name: matrix_network
@@ -85,3 +86,6 @@ networks:
homepage_network:
external: true
name: homepage_network
cloud_network:
external: true
name: cloud_network

View File

@@ -2,7 +2,7 @@
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name domain.ru www.domain.ru git.domain.ru cloud.domain.ru m.domain.ru chat.domain.ru;
server_name domain.ru www.domain.ru git.domain.ru disk.domain.ru cloud.domain.ru m.domain.ru chat.domain.ru todo.domain.ru draw.domain.ru;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
@@ -55,13 +55,13 @@ server {
}
}
# 4. Cloud
# 4. Disk
server {
listen 443 ssl;
server_name cloud.domain.ru;
server_name disk.domain.ru;
ssl_certificate /etc/letsencrypt/live/cloud.domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.domain.ru/privkey.pem;
ssl_certificate /etc/letsencrypt/live/disk.domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/disk.domain.ru/privkey.pem;
client_max_body_size 0;