mirror of
https://github.com/StepanovPlaton/HomeServerServices.git
synced 2026-04-03 20:30:44 +04:00
Compare commits
2 Commits
a150d7fddd
...
1b6527cedd
| Author | SHA1 | Date | |
|---|---|---|---|
| 1b6527cedd | |||
| 95cd3c441c |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -21,6 +21,7 @@ matrix/db
|
|||||||
cloud/db
|
cloud/db
|
||||||
cloud/data
|
cloud/data
|
||||||
cloud/config
|
cloud/config
|
||||||
|
cloud/apps
|
||||||
|
|
||||||
disk/filebrowser.db
|
disk/filebrowser.db
|
||||||
|
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -46,11 +46,15 @@
|
|||||||
- Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru)
|
- Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru)
|
||||||
- **Git-сервер Gitea** для хостинга репозиториев
|
- **Git-сервер Gitea** для хостинга репозиториев
|
||||||
- **FileBrowser** — веб-интерфейс для управления файлами через браузер
|
- **FileBrowser** — веб-интерфейс для управления файлами через браузер
|
||||||
|
- **Memos** — быстрые заметки через веб-интерфейс
|
||||||
- **Matrix Synapse** — собственный сервер для мессенджера Matrix с веб-клиентом Element и административной панелью
|
- **Matrix Synapse** — собственный сервер для мессенджера Matrix с веб-клиентом Element и административной панелью
|
||||||
|
- **NextCloud** — полнофункциональное облачное хранилище с синхронизацией файлов, календарем, контактами, задачами и многими другими функциями
|
||||||
- Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью **AdGuard Home**
|
- Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью **AdGuard Home**
|
||||||
- Управление контейнерами через **Portainer**
|
- Управление контейнерами через **Portainer**
|
||||||
- Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигурации
|
- Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигурации
|
||||||
|
|
||||||
|
> 💡 **Важно:** Все сервисы модульные и независимые. Вы можете устанавливать только те, которые вам действительно нужны. Подробные инструкции по установке каждого сервиса находятся в файле [Services.md](./Services.md).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📝 Подготовка
|
## 📝 Подготовка
|
||||||
@@ -108,4 +112,12 @@
|
|||||||
|
|
||||||
#### FileBrowser
|
#### FileBrowser
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
#### Memos
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### NextCloud
|
||||||
|
|
||||||
|

|
||||||
|
|||||||
67
Services.md
67
Services.md
@@ -99,10 +99,10 @@ podman-compose up -d
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8️⃣ Cloud (FileBrowser) — веб-интерфейс для управления файлами
|
## 8️⃣ FileBrowser — простой веб-интерфейс для управления файлами
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd cloud
|
cd disk
|
||||||
cp .env.example .env && vim .env
|
cp .env.example .env && vim .env
|
||||||
touch filebrowser.db && podman unshare chown -R 1000:1000 filebrowser.db
|
touch filebrowser.db && podman unshare chown -R 1000:1000 filebrowser.db
|
||||||
podman-compose up -d
|
podman-compose up -d
|
||||||
@@ -110,7 +110,19 @@ podman-compose up -d
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 9️⃣ Matrix — собственный сервер для мессенджера Matrix
|
## 9️⃣ Memos — быстрые заметки
|
||||||
|
|
||||||
|
> Memos — это простой и быстрый способ создавать и управлять заметками через веб-интерфейс.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd memos
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
podman-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔟 Matrix — собственный сервер для мессенджера Matrix
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd matrix
|
cd matrix
|
||||||
@@ -147,7 +159,54 @@ podman exec -it matrix-synapse register_new_matrix_user -c /data/homeserver.yaml
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔟 Nginx Reverse Proxy (Entrypoint)
|
## 1️⃣1️⃣ NextCloud — личное многофункциональное облако
|
||||||
|
|
||||||
|
> NextCloud — полнофункциональное облачное хранилище с возможностью синхронизации файлов, календарем, контактами, задачами и многими другими функциями.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd cloud
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
mkdir db
|
||||||
|
mkdir config && podman unshare chown -R 33:33 config
|
||||||
|
mkdir data && podman unshare chown -R 33:33 data
|
||||||
|
mkdir apps && podman unshare chown -R 33:33 apps
|
||||||
|
podman-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ В docker-compose.yml есть переменные, которые можно указать при первом запуске, но они мешают если пересоздавать контейнер не с нуля.
|
||||||
|
|
||||||
|
Настраиваем NextCloud через веб-форму после запуска Nginx. Выбираем пользователя по умолчанию, БД. В разделе приложений можем установить дополнительные модули:
|
||||||
|
|
||||||
|
**Базовые модули:**
|
||||||
|
- Calendar — календарь
|
||||||
|
- Contacts — контакты
|
||||||
|
- Deck — доски задач
|
||||||
|
- Whiteboard — виртуальная доска
|
||||||
|
- Forms — формы
|
||||||
|
|
||||||
|
**Комплексные модули:**
|
||||||
|
- **NextCloud Office** — конфигурируется с Collabora Office, которая запускается на отдельном домене, его нужно указать в настройках
|
||||||
|
- **NextCloud Talk** — видеоконференции. Для доступа извне сети нужен модуль CoTurn, он запускается на отдельном домене
|
||||||
|
> ⚠️ Для этого модуля нужно открыть UDP порты с SSL, что проблематично. Это я пока не настраивал
|
||||||
|
|
||||||
|
> Для работы NextCloud Office в `config/config.php` нужно добавить:
|
||||||
|
> ```php
|
||||||
|
> 'trusted_proxies' => ['10.89.0.1'],
|
||||||
|
> 'overwrite.cli.url' => 'https://cloud.domain.ru',
|
||||||
|
> 'overwriteprotocol' => 'https',
|
||||||
|
> 'overwritehost' => 'cloud.domain.ru',
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> `10.89.0.1` — это Gateway для Podman
|
||||||
|
> `cloud.domain.ru` меняем на наш домен
|
||||||
|
|
||||||
|
**Настройка внешнего хранилища:**
|
||||||
|
|
||||||
|
Также устанавливаем модуль **External Storage Support** и в его настройках добавляем диск локального типа по пути `/var/www/external_storage` (это внешний диск, указанный в `.env`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1️⃣2️⃣ Nginx Reverse Proxy (Entrypoint)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd proxy
|
cd proxy
|
||||||
|
|||||||
@@ -7,3 +7,7 @@ PATH_TO_FOLDER=/path/to/folder/
|
|||||||
NEXTCLOUD_ADMIN=admin
|
NEXTCLOUD_ADMIN=admin
|
||||||
NEXTCLOUD_PASSWORD=password
|
NEXTCLOUD_PASSWORD=password
|
||||||
NEXTCLOUD_DOMAIN=cloud.domain.ru
|
NEXTCLOUD_DOMAIN=cloud.domain.ru
|
||||||
|
|
||||||
|
COLLABORA_ADMIN=admin
|
||||||
|
COLLABORA_PASSWORD=password
|
||||||
|
COLLABORA_DOMAIN=office.domain.ru
|
||||||
|
|||||||
@@ -29,16 +29,17 @@ services:
|
|||||||
- ${PATH_TO_FOLDER:?}:/var/www/external_storage:z
|
- ${PATH_TO_FOLDER:?}:/var/www/external_storage:z
|
||||||
- ./data:/var/www/html/data:z
|
- ./data:/var/www/html/data:z
|
||||||
- ./config:/var/www/html/config:z
|
- ./config:/var/www/html/config:z
|
||||||
environment:
|
- ./apps:/var/www/html/custom_apps:z
|
||||||
- MYSQL_PASSWORD=${DATABASE_PASSWORD:?}
|
#environment:
|
||||||
- MYSQL_DATABASE=${NEXTCLOUD_DATABASE:?}
|
# - MYSQL_PASSWORD=${DATABASE_PASSWORD:?}
|
||||||
- MYSQL_USER=${DATABASE_USER:?}
|
# - MYSQL_DATABASE=${NEXTCLOUD_DATABASE:?}
|
||||||
- MYSQL_HOST=nextcloud-db
|
# - MYSQL_USER=${DATABASE_USER:?}
|
||||||
- REDIS_HOST=nextcloud-redis
|
# - MYSQL_HOST=nextcloud-db
|
||||||
|
# - REDIS_HOST=nextcloud-redis
|
||||||
- NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN:?}
|
#
|
||||||
- NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_PASSWORD:?}
|
# - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN:?}
|
||||||
- NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN:?}
|
# - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_PASSWORD:?}
|
||||||
|
# - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN:?}
|
||||||
depends_on:
|
depends_on:
|
||||||
- nextcloud-db
|
- nextcloud-db
|
||||||
- nextcloud-redis
|
- nextcloud-redis
|
||||||
@@ -46,6 +47,21 @@ services:
|
|||||||
- cloud_network
|
- cloud_network
|
||||||
- private_cloud_network
|
- private_cloud_network
|
||||||
|
|
||||||
|
nextcloud-collabora:
|
||||||
|
image: docker.io/collabora/code:latest
|
||||||
|
container_name: nextcloud-collabora
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- aliasgroup1=https://${NEXTCLOUD_DOMAIN:?}
|
||||||
|
- DONT_GEN_SSL_CERT=true
|
||||||
|
- server_name=${COLLABORA_DOMAIN:?}
|
||||||
|
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:net.post_allow.host[0]=.*
|
||||||
|
- username=${COLLABORA_ADMIN:?}
|
||||||
|
- password=${COLLABORA_PASSWORD:?}
|
||||||
|
networks:
|
||||||
|
- cloud_network
|
||||||
|
- private_cloud_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
cloud_network:
|
cloud_network:
|
||||||
name: cloud_network
|
name: cloud_network
|
||||||
|
|||||||
BIN
proxy/nginx/conf.d/.default.conf.swp
Normal file
BIN
proxy/nginx/conf.d/.default.conf.swp
Normal file
Binary file not shown.
@@ -74,7 +74,77 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# 4. Matrix
|
# 5. Cloud
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name cloud.stepanovplaton.ru;
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/cloud.stepanovplaton.ru/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/cloud.stepanovplaton.ru/privkey.pem;
|
||||||
|
|
||||||
|
client_max_body_size 0;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://nextcloud;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name office.stepanovplaton.ru;
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/office.stepanovplaton.ru/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/office.stepanovplaton.ru/privkey.pem;
|
||||||
|
|
||||||
|
location ^~ /browser {
|
||||||
|
proxy_pass http://nextcloud-collabora:9980;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
}
|
||||||
|
location ^~ /hosting/discovery {
|
||||||
|
proxy_pass http://nextcloud-collabora:9980;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
}
|
||||||
|
location ^~ /hosting/capabilities {
|
||||||
|
proxy_pass http://nextcloud-collabora:9980;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
}
|
||||||
|
location ~ ^/cool/(.*)/ws$ {
|
||||||
|
proxy_pass http://nextcloud-collabora:9980;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade"; # Явно указываем Upgrade
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_read_timeout 36000s;
|
||||||
|
}
|
||||||
|
location ^~ /cool/adminws {
|
||||||
|
proxy_pass http://nextcloud-collabora:9980;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_read_timeout 36000s;
|
||||||
|
}
|
||||||
|
location / {
|
||||||
|
proxy_pass http://nextcloud-collabora:9980;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name talk.stepanovplaton.ru;
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/talk.stepanovplaton.ru/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/talk.stepanovplaton.ru/privkey.pem;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
return 200 "Nextcloud Talk TURN server not configured";
|
||||||
|
add_header Content-Type text/plain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# 6. Matrix
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
server_name m.domain.ru;
|
server_name m.domain.ru;
|
||||||
@@ -110,7 +180,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Memos
|
# 7. Memos
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
server_name todo.domain.ru;
|
server_name todo.domain.ru;
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
BIN
screenshots/memos.png
Normal file
BIN
screenshots/memos.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 59 KiB |
BIN
screenshots/nextcloud.png
Normal file
BIN
screenshots/nextcloud.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
Reference in New Issue
Block a user