This commit is contained in:
2026-02-12 12:25:42 +04:00
parent 34e37707d6
commit b139c26ad6
8 changed files with 113 additions and 43 deletions

4
.gitignore vendored
View File

@@ -18,7 +18,9 @@ gitea/config/*
matrix/data/* matrix/data/*
matrix/db matrix/db
cloud/filebrowser.db cloud/db
cloud/data
cloud/config
memos memos

View File

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

View File

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

BIN
disk/filebrowser.db Normal file

Binary file not shown.

View File

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

View File

@@ -2,7 +2,7 @@
server { server {
listen 80 default_server; listen 80 default_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/ { location /.well-known/acme-challenge/ {
root /var/www/certbot; root /var/www/certbot;
@@ -55,13 +55,13 @@ server {
} }
} }
# 4. Cloud # 4. Disk
server { server {
listen 443 ssl; 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 /etc/letsencrypt/live/disk.domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.domain.ru/privkey.pem; ssl_certificate_key /etc/letsencrypt/live/disk.domain.ru/privkey.pem;
client_max_body_size 0; client_max_body_size 0;