Недавно я обнаружил эту замечательную панель управления сервером для управления службами, работающими на сервере. Она называется Coolify. Я успешно установил её и в настоящее время использую для управления двумя серверами, устанавливая и контролируя n8n и другие скрипты.
Единственной отсутствующей службой в Coolify для меня является Discourse. Если бы вы могли добавить Discourse в список служб Coolify, это было бы потрясающе. Тогда мы могли бы с этого момента рекомендовать всем новичкам в этой области просто установить Coolify и затем включить Discourse.
Поскольку Discourse не использует Docker Compose, а собственный лаунчер, я не был готов к глубокой интеграции для установки через веб-интерфейс. Моя цель и результат — запуск Discourse на главном сервере Coolify с маршрутизацией через встроенный Traefik к нужному контейнеру.
Это потребовало лишь минимальной перенастройки Discourse. Для этого в файле /var/discourse/containers/app.yml я отключил сервер с сокетами, а затем использовал метки (labels) и аргументы docker_args, чтобы настроить Traefik: он должен найти контейнер Discourse, обработать перенаправление HTTP→HTTPS, получить сертификаты и проксировать запросы с FORUM-HOSTNAME.COM в контейнер Discourse:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
## Раскомментируйте следующую строку, чтобы включить слушатель IPv6
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
# - "templates/web.socketed.template.yml"
## Какие TCP/IP-порты должен открывать этот контейнер?
## Если вы хотите, чтобы Discourse использовал тот же порт, что и другой веб-сервер, например Apache или nginx,
## см. https://meta.discourse.org/t/17247 для деталей
expose:
# - "80:80" # http
# - "443:443" # https
docker_args:
- '--network=coolify'
labels:
app_name: discourse
traefik.enable: true
traefik.http.middlewares.discourse_redirect2https.redirectscheme.scheme: https
traefik.http.middlewares.gzip.compress: true
traefik.http.routers.discourse.rule: Host(`FORUM-HOSTNAME.COM`)
traefik.http.routers.discourse.entrypoints: http
traefik.http.routers.discourse.middlewares: discourse_redirect2https
traefik.http.routers.discourse_secure.rule: Host(`FORUM-HOSTNAME.COM`)
traefik.http.routers.discourse_secure.entrypoints: https
traefik.http.routers.discourse_secure.tls: true
traefik.http.routers.discourse_secure.tls.certresolver: letsencrypt
traefik.http.routers.discourse_secure.middlewares: gzip
traefik.http.services.discourse_secure.loadbalancer.server.port: 80
Затем выполните ./launcher rebuild app. После завершения работы вы сможете остановить nginx на хосте и запустить контейнер coolify-proxy, который займёт порты 80/443 и возьмёт на себя остальное: наше сообщество работает на хосте Coolify, где Coolify управляет остальным программным обеспечением.