diff --git a/.gitignore b/.gitignore index e5da614..6c7e380 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,9 @@ gitea/config/* matrix/data/* matrix/db -cloud/filebrowser.db +cloud/db +cloud/data +cloud/config memos diff --git a/cloud/.env.example b/cloud/.env.example index 983ef59..7e571e8 100644 --- a/cloud/.env.example +++ b/cloud/.env.example @@ -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 diff --git a/cloud/docker-compose.yml b/cloud/docker-compose.yml index ab64e9e..034c586 100644 --- a/cloud/docker-compose.yml +++ b/cloud/docker-compose.yml @@ -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 diff --git a/disk/.env.example b/disk/.env.example new file mode 100644 index 0000000..983ef59 --- /dev/null +++ b/disk/.env.example @@ -0,0 +1,5 @@ +SHARED_FOLDER=/path/to/folder +USER_ID=1000 +GROUP_ID=1000 +ADMIN_USER=admin +ADMIN_PASSWORD=password # Минимальная длинна 12 символов diff --git a/disk/docker-compose.yml b/disk/docker-compose.yml new file mode 100644 index 0000000..977c430 --- /dev/null +++ b/disk/docker-compose.yml @@ -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 diff --git a/disk/filebrowser.db b/disk/filebrowser.db new file mode 100644 index 0000000..a91904d Binary files /dev/null and b/disk/filebrowser.db differ diff --git a/proxy/docker-compose.yml b/proxy/docker-compose.yml index d13f455..8ed5bc1 100644 --- a/proxy/docker-compose.yml +++ b/proxy/docker-compose.yml @@ -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 diff --git a/proxy/nginx/conf.d/default.conf.example b/proxy/nginx/conf.d/default.conf.example index a540573..5be670f 100644 --- a/proxy/nginx/conf.d/default.conf.example +++ b/proxy/nginx/conf.d/default.conf.example @@ -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;