mirror of
https://github.com/StepanovPlaton/HomeServerServices.git
synced 2026-04-03 12:20:43 +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/data
|
||||
cloud/config
|
||||
cloud/apps
|
||||
|
||||
disk/filebrowser.db
|
||||
|
||||
|
||||
14
README.md
14
README.md
@@ -46,11 +46,15 @@
|
||||
- Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru)
|
||||
- **Git-сервер Gitea** для хостинга репозиториев
|
||||
- **FileBrowser** — веб-интерфейс для управления файлами через браузер
|
||||
- **Memos** — быстрые заметки через веб-интерфейс
|
||||
- **Matrix Synapse** — собственный сервер для мессенджера Matrix с веб-клиентом Element и административной панелью
|
||||
- **NextCloud** — полнофункциональное облачное хранилище с синхронизацией файлов, календарем, контактами, задачами и многими другими функциями
|
||||
- Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью **AdGuard Home**
|
||||
- Управление контейнерами через **Portainer**
|
||||
- Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигурации
|
||||
|
||||
> 💡 **Важно:** Все сервисы модульные и независимые. Вы можете устанавливать только те, которые вам действительно нужны. Подробные инструкции по установке каждого сервиса находятся в файле [Services.md](./Services.md).
|
||||
|
||||
---
|
||||
|
||||
## 📝 Подготовка
|
||||
@@ -108,4 +112,12 @@
|
||||
|
||||
#### FileBrowser
|
||||
|
||||

|
||||

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

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

|
||||
|
||||
67
Services.md
67
Services.md
@@ -99,10 +99,10 @@ podman-compose up -d
|
||||
|
||||
---
|
||||
|
||||
## 8️⃣ Cloud (FileBrowser) — веб-интерфейс для управления файлами
|
||||
## 8️⃣ FileBrowser — простой веб-интерфейс для управления файлами
|
||||
|
||||
```bash
|
||||
cd cloud
|
||||
cd disk
|
||||
cp .env.example .env && vim .env
|
||||
touch filebrowser.db && podman unshare chown -R 1000:1000 filebrowser.db
|
||||
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
|
||||
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
|
||||
cd proxy
|
||||
|
||||
@@ -7,3 +7,7 @@ PATH_TO_FOLDER=/path/to/folder/
|
||||
NEXTCLOUD_ADMIN=admin
|
||||
NEXTCLOUD_PASSWORD=password
|
||||
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
|
||||
- ./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:?}
|
||||
- ./apps:/var/www/html/custom_apps: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
|
||||
@@ -46,6 +47,21 @@ services:
|
||||
- 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:
|
||||
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 {
|
||||
listen 443 ssl;
|
||||
server_name m.domain.ru;
|
||||
@@ -110,7 +180,7 @@ server {
|
||||
}
|
||||
}
|
||||
|
||||
# Memos
|
||||
# 7. Memos
|
||||
server {
|
||||
listen 443 ssl;
|
||||
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