С помощью Docker вы можете развернуть свою контейнеризированную среду, используя простой код Docker Compose, и даже объединять эти приложения в стеки, которые можно запускать и останавливать по желанию. Давайте рассмотрим 10 проектов на Docker, которые можно реализовать за выходные и которые действительно пригодятся.
1. Gitea для самохостинга репозиториев Git
Собственный репозиторий кода — это отличный способ начать изучать DevOps и инфраструктуру как код. Это поможет быстро освоить команды Git и рабочие процессы DevOps. Конечно, следующий вопрос — какое решение выбрать для хостинга? Здесь Gitea быстро набирает популярность, поскольку она легковесна и почти идентична GitHub, с которым многие уже знакомы. Лично я предпочитаю GitLab, но если вы ищете Docker-решение для локального репозитория своего кода, Gitea — отличный вариант для начала.
Вы можете использовать пример Docker Compose ниже, чтобы начать работу с Gitea.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
version: ‘3’ services: gitea: image: gitea/gitea:latest container_name: gitea environment: — USER_UID=1000 — USER_GID=1000 volumes: — ./gitea:/data ports: — «3000:3000» — «222:22» restart: always |
2. Netdata для мониторинга
Netdata — одно из самых простых решений для мониторинга вашей домашней лаборатории. Она легко устанавливается с помощью легковесного агента на Linux и Windows, а также собирает метрики Docker-контейнеров и Kubernetes. Мне нравится, что это простой контейнер, который можно быстро развернуть.
Пример команды Docker run для Netdata (укажите свой токен и ID комнаты):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
docker run —d —name=netdata \ —pid=host \ —network=host \ —v netdataconfig:/etc/netdata \ —v netdatalib:/var/lib/netdata \ —v netdatacache:/var/cache/netdata \ —v /:/host/root:ro,rslave \ —v /etc/passwd:/host/etc/passwd:ro \ —v /etc/group:/host/etc/group:ro \ —v /etc/localtime:/etc/localtime:ro \ —v /proc:/host/proc:ro \ —v /sys:/host/sys:ro \ —v /etc/os—release:/host/etc/os—release:ro \ —v /var/log:/host/var/log:ro \ —v /var/run/docker.sock:/var/run/docker.sock:ro \ —v /run/dbus:/run/dbus:ro \ —restart unless—stopped \ —cap—add SYS_PTRACE \ —cap—add SYS_ADMIN \ —security—opt apparmor=unconfined \ —e NETDATA_CLAIM_TOKEN= \ netdata/netdata:stable |
3. Nginx Proxy Manager для SSL на всём
Один из лучших проектов, которые можно развернуть, — это Nginx Proxy Manager. Я рекомендую его всем, кто начинает работать с домашними лабораториями, так как он предоставляет простой GUI для управления SSL-сертификатами Docker-контейнеров и позволяет легко получать сертификаты Lets Encrypt. Наличие SSL на контейнерах с веб-интерфейсами делает всё более безопасным и совместимым с другими решениями, которые могут плохо работать с самоподписанными сертификатами.
Пример Docker Compose для развёртывания:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
version: ‘3’ services: npm: image: jc21/nginx—proxy—manager:latest container_name: npm ports: — «80:80» — «81:81» — «443:443» volumes: — ./data:/data — ./letsencrypt:/etc/letsencrypt restart: always |
4. Vaultwarden для самохоста менеджера паролей
Если вам нужен менеджер паролей, где вы контролируете все данные и никто другой не имеет доступа к вашим секретам, самохостинг — отличное решение. Vaultwarden — один из самых известных менеджеров паролей, зарекомендовавший себя как безопасный и надёжный.
Пример Docker Compose для Vaultwarden:
|
1 2 3 4 5 6 7 8 9 10 11 |
version: ‘3’ services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden volumes: — ./vw—data:/data ports: — «8080:80» restart: always |
5. Watchtower для автоматического обновления контейнеров
Если вам нужно решение для управления жизненным циклом Docker-контейнеров, то это Watchtower. Watchtower проверяет ваши контейнеры на наличие обновлений по расписанию. Если обновление найдено, он останавливает контейнер, загружает новый образ и перезапускает контейнер с теми же настройками. Для Docker Swarm есть аналог — Shepherd, который делает то же самое для сервисов.
Пример Docker Compose для Watchtower (параметр cleanup удаляет старые образы):
|
1 2 3 4 5 6 7 8 9 10 11 12 |
version: ‘3’ services: watchtower: image: containrrr/watchtower container_name: watchtower volumes: — /var/run/docker.sock:/var/run/docker.sock environment: — WATCHTOWER_CLEANUP=true — WATCHTOWER_POLL_INTERVAL=300 restart: always |
6. Dozzle для анализа логов контейнеров
Dozzle — это инструмент, который я недавно открыл для себя. Он позволяет быстро просматривать логи контейнеров на разных хостах без необходимости входить на серверы и вручную запускать docker logs.
Пример Docker Compose для Dozzle:
|
1 2 3 4 5 6 7 8 9 10 11 |
version: ‘3’ services: dozzle: image: amir20/dozzle:latest container_name: dozzle ports: — «8888:8080» volumes: — /var/run/docker.sock:/var/run/docker.sock restart: always |
7. Portainer — лучший GUI для Docker
Если вам нужен лучший инструмент для управления Docker-контейнерами, то это Portainer. Есть и другие бесплатные решения, но ни одно из них не сравнится с Portainer по функциональности и удобству. Разверните его в рамках выходного проекта, и вы сразу оцените преимущества удобного управления.
Portainer также отлично подходит для работы с Docker Swarm, делая это решение более удобным.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
version: ‘3’ services: portainer: image: portainer/portainer—ce:latest container_name: portainer ports: — «9443:9443» volumes: — /var/run/docker.sock:/var/run/docker.sock — ./portainer—data:/data restart: always |
8. OpenWebUI + Ollama для самохостинга AI
Эта пара решений — то, с чем я экспериментировал последние месяцы. Самохостинг собственного AI-сервера — это потрясающе: не нужно беспокоиться о стоимости API у крупных облачных провайдеров, и вы контролируете свои данные.
Развернуть собственный AI проще, чем кажется. С OpenWebUI и Ollama вы получите опыт, похожий на ChatGPT, но в своей домашней лаборатории.
Пример Docker Compose для развёртывания AI:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
version: ‘3.8’ services: ollama: image: ollama/ollama container_name: ollama volumes: — ollama:/root/.ollama ports: — «11434:11434» restart: unless—stopped openwebui: image: ghcr.io/open—webui/open—webui:main container_name: openwebui depends_on: — ollama environment: — OLLAMA_BASE_URL=http://ollama:11434 ports: — «3000:3000» volumes: — openwebui:/app/backend/data restart: unless—stopped volumes: ollama: openwebui: |
9. Home Assistant для умного дома
Home Assistant — это стандарт де-факто для самохоста решений умного дома. Это комплексная система управления всеми устройствами умного дома с единым интерфейсом.
Пример Docker Compose для Home Assistant (с дополнительными контейнерами для пересылки сообщений):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
version: ‘3.8’ services: homeassistant: image: ghcr.io/home—assistant/home—assistant:stable container_name: homeassistant user: «1001:1001» restart: unless—stopped network_mode: «service:proxy» # attach to Traefik sidecar for SSL depends_on: — mosquitto volumes: — /srv/homeassistant/config:/config:rw — homeassistant_db:/config/home—assistant_v2.db environment: — TZ=America/Chicago secrets: — api_key healthcheck: test: [«CMD-SHELL», «curl -f http://localhost:8123/api/health || exit 1»] interval: 1m timeout: 10s retries: 3 cap_drop: — ALL cap_add: — CHOWN — SETUID — SETGID mosquitto: image: eclipse—mosquitto:latest container_name: mosquitto restart: unless—stopped networks: homenet: volumes: — /srv/mosquitto/config:/mosquitto/config:ro — /srv/mosquitto/data:/mosquitto/data — /srv/mosquitto/log:/mosquitto/log ports: — «1883:1883» influxdb: image: influxdb:2.6 container_name: influxdb restart: unless—stopped networks: homenet: volumes: — influxdb_data:/var/lib/influxdb2 environment: — INFLUXDB_ADMIN_USER=admin — INFLUXDB_ADMIN_PASSWORD_FILE=/run/secrets/influxdb_admin_password secrets: — influxdb_admin_password ports: — «8086:8086» grafana: image: grafana/grafana:9.5 container_name: grafana restart: unless—stopped networks: homenet: volumes: — grafana_data:/var/lib/grafana environment: — GF_SECURITY_ADMIN_PASSWORD_FILE=/run/secrets/grafana_admin_password secrets: — grafana_admin_password ports: — «3000:3000» networks: homenet: driver: macvlan driver_opts: parent: eth0 ipam: config: — subnet: 192.168.1.0/24 gateway: 192.168.1.1 volumes: homeassistant_db: influxdb_data: grafana_data: |
10. N8N для автоматизации рабочих процессов
n8n — один из самых крутых инструментов автоматизации. Он позволяет легко автоматизировать рабочие процессы, избавляя от рутины. Это как ваш собственный Zapier, который работает с практически любым API. Вы можете использовать его для автоматизации обновлений Git, email-уведомлений, перемещения файлов или даже триггеров Home Assistant.
Базовый Docker Compose для n8n:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
version: ‘3’ services: n8n: image: n8nio/n8n:latest container_name: n8n ports: — «5678:5678» environment: — N8N_BASIC_AUTH_ACTIVE=true — N8N_BASIC_AUTH_USER=admin — N8N_BASIC_AUTH_PASSWORD=changeme — TZ=America/New_York volumes: — ./n8n—data:/home/node/.n8n restart: always |
Заключение
Развернув эти проекты, вы узнаете много нового о контейнеризации, самохостинге и управлении современной инфраструктурой. Напишите в комментариях, используете ли вы какие-то из этих решений или можете порекомендовать другие.










