OpenProject

Installation with docker container

docker

安裝 docker

Pulling OpenProject Image

docker pull openproject/openproject:151docker docs: docker image pull

Creating the Directory for Persistent Data Stores

sudo mkdir -p /var/lib/openproject/pgdata /var/lib/openproject/assets

啟動 OpenProject 的 docker container

 

docker run -d --name openproject \
  --restart unless-stopped \
  -p 127.0.0.1:8080:80 \
  -e OPENPROJECT_SECRET_KEY_BASE=$(openssl rand -hex 64) \
  -e OPENPROJECT_HOST__NAME={domain_name} \
  -e OPENPROJECT_HTTPS=true \
  -v /var/lib/openproject/pgdata:/var/openproject/pgdata \
  -v /var/lib/openproject/assets:/var/openproject/assets \
  openproject/openproject:15
  • -d or --detach2docker docs: Running containers – Foreground and background
  • --restart unless-stopped3docker docs: Start containers automatically
    • 自動重啟:當 container 停止,docker 引擎會嘗試再次重新啟動
    • 手動停止例外:
      人為呼叫docker stopdocker kill指令時
      即使 docker daemon4docker docs: docker Engine 重啟,該容器也不會再啟動
  • -p {host_port}:{container_port}:將 container 的{container_port}指定到主機的{host_port}
  • SECRET_KEY_BASE 是 Ruby on Rails 應用中非常重要的一個安全設定
      (OpenProject 就是基於 Rails)
    用來生成並驗證:

    • 使用者登入 session 的加密簽章

    • 防止 CSRF(跨站請求偽造攻擊)

    • 資料完整性驗證

  • 使用openssl rand -hex 64隨機產生一個 128 字元 (64 bytes) 長的十六進位字串

使用 Apache2 作為反代理 並 追加站點

Apache2

安裝 Apache2 套件並重啟

 

sudo a2enmod proxy proxy_http rewrite headers ssl
sudo systemctl restart apache2
建立 Apache2 的 可用 虛擬主機 (VirtualHost) 設定檔 / 站點

建立/etc/apache2/sites-available/openproject.conf並寫入:

<VirtualHost *:80>
  ServerName pm.a1go.ai

  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName pm.a1go.ai

  SSLEngine On
  SSLCertificateFile    /etc/letsencrypt/live/pm.a1go.ai/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/pm.a1go.ai/privkey.pem

  ProxyRequests     Off
  ProxyPreserveHost On
  RequestHeader     set X-Forwarded-Proto "https"

  ProxyPass        /  http://127.0.0.1:8080/
  ProxyPassReverse /  http://127.0.0.1:8080/
</VirtualHost>
</IfModule>
啟用站點並重載 Apache2

 

sudo a2ensite openproject.conf
sudo systemctl reload apache2

DDClient

更新 /etc/ddclient.conf
重啟 DDClient

sudo systemctl restart ddclient

測試 DDClient

sudo ddclient -daemon=0 -debug -verbose -noquiet

Certbot

先一旦暫停 Apache2

sudo systemctl stop apache2

使用 Certbot 在 Standalone 模式下 取得 SSL 憑證 (自動續期)

sudo certbot certonly --standalone -d {new_domain_name}

再次啟動 Apache2

sudo systemctl start apache2

測試並重載 Apache2

 

sudo apache2ctl configtest
sudo systemctl reload apache2

Last Updated on 2025/04/18 by A1go

References

目錄
Bitnami