Compare commits

...

5 Commits

Author SHA1 Message Date
7f38d28019 Update gitignore 2026-02-27 17:44:09 +04:00
2b6e9d0061 Merge branch 'main' of https://github.com/StepanovPlaton/HomeServerServices 2026-02-27 17:43:06 +04:00
c61c1ba072 Update homepage 2026-02-27 17:42:59 +04:00
1b6527cedd Update readme 2026-02-12 18:46:13 +04:00
95cd3c441c Add cloud web office 2026-02-12 18:39:50 +04:00
11 changed files with 181 additions and 18 deletions

2
.gitignore vendored
View File

@@ -21,11 +21,13 @@ matrix/db
cloud/db
cloud/data
cloud/config
cloud/apps
disk/filebrowser.db
memos/memos/*.db
memos/memos/*.db-wal
memos/memos/*.db-shm
memos/memos/.thumbnail_cache
!.keep

View File

@@ -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
![FileBrowser Interface](./screenshots/cloud.png)
![FileBrowser Interface](./screenshots/filebrowser.png)
#### Memos
![Memos Interface](./screenshots/memos.png)
#### NextCloud
![NextCloud Interface](./screenshots/nextcloud.png)

View File

@@ -99,10 +99,10 @@ podman-compose up -d
---
## 8Cloud (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

View File

@@ -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

View File

@@ -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

Binary file not shown.

View File

@@ -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;

View File

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

BIN
screenshots/memos.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
screenshots/nextcloud.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB