n8nをubuntu/Apache上にセルフホストする
Page content
うまく動かすまで大変だったの(おもにWebSocketで)メモっておく。
このサーバで試しに動かしてみる。
インストール前の準備
- 専用のアカウント作成不要
- user-id:1000のユーザをオーナにする必要あり
- サブディレクトリで実施したが色々と問題が噴出したので、サブドメインに直した
$ sudo mkdir -p /opt/service/n8n <---任意の場所でOK
$ cd /opt/service/n8n
$ sudo mkdir -p n8n_data
$ sudo chown -R 1000:1000 n8n-data
n8nの導入とApache設定
/opt/serbice/n8n/docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.moooi.jp
- N8N_PORT=5678
- N8N_PROTOCOL=http
- N8N_PATH=/
- WEBHOOK_URL=https://n8n.moooi.jp/
- N8N_EDITOR_BASE_URL=https://n8n.moooi.jp/
- GENERIC_TIMEZONE=Asia/Tokyo
- TZ=Asia/Tokyo
volumes:
- ./n8n_data:/home/node/.n8n
-
/n8n/はサーバ上の公開サブディレクトリxxxx(https://example.com/xxxx)とあわせる。
-
WEBHOOK_URLを指定しないとポート番号つきになってしまう
/etc/apache2/site-available/app-n8n.conf(またはvirutlhost内に記載)
<VirtualHost *:443>
ServerName n8n.moooi.jp
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/n8n.moooi.jp/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/n8n.moooi.jp/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ProxyPreserveHost On
ProxyRequests Off
# WebSocket
ProxyPass /rest/push ws://127.0.0.1:5678/rest/push retry=0 timeout=3600
ProxyPassReverse /rest/push ws://127.0.0.1:5678/rest/push
# BufferSetting
SetEnv proxy-nokeepalive 1
SetEnv proxy-initial-not-pooled 1
# Apache->n8n
ProxyPass / http://127.0.0.1:5678/ flushpackets=on
ProxyPassReverse / http://127.0.0.1:5678/
ErrorLog ${APACHE_LOG_DIR}/n8n_error.log
</VirtualHost>
- WebSocketが成功するまで、海外のコミュニティサイトとかみて試行錯誤、これで動いた。
$ sudo apachectl configtest
$ sudo systemctl restart apache2
Apacheを再起動
コンテナの作成と起動
$ cd /opt/service/n8n
$ sudo docker compose up -d
⠋ Container n8n Creating
[+] Running 1/2
ここらへん本当にDocker便利。
n8nの動作確認
ブラウザでhttps://example.com/n8n/にアクセスする

この画面がでてきたらOK。メールアドレス、任意のパスワード(大文字、英数字を1文字以上含む)を指定して登録する