mirror of
https://github.com/StepanovPlaton/HomeServerServices.git
synced 2026-04-03 12:20:43 +04:00
Compare commits
8 Commits
34e37707d6
...
a150d7fddd
| Author | SHA1 | Date | |
|---|---|---|---|
| a150d7fddd | |||
| ec5fb34b03 | |||
| f3d947db93 | |||
| 696321ecb8 | |||
| b139c26ad6 | |||
| 10876634ec | |||
| 396ef88209 | |||
| 2fb783d327 |
10
.gitignore
vendored
10
.gitignore
vendored
@@ -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
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
- Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru)
|
||||
- **Git-сервер Gitea** для хостинга репозиториев
|
||||
- **FileBrowser** — веб-интерфейс для управления файлами через браузер
|
||||
- **Matrix Synapse** — собственный сервер для мессенджера Matrix с веб-клиентом Element
|
||||
- **Matrix Synapse** — собственный сервер для мессенджера Matrix с веб-клиентом Element и административной панелью
|
||||
- Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью **AdGuard Home**
|
||||
- Управление контейнерами через **Portainer**
|
||||
- Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигурации
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
5
disk/.env.example
Normal 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
40
disk/docker-compose.yml
Normal 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.
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user