n8nをubuntu/Apache上にセルフホストする
Page content
うまく動かすまで(おもにサブディレクトリとApache運用が)そこそこ大変だったのでメモっておく。
このサーバで試しに動かしてみる。
インストール前の準備
- 専用のアカウント作成不要
- 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
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=moooi.jp
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_PATH=/n8n/
- N8N_URL=https://moooi.jp/n8n/
- NODE_ENV=production
- DB_TYPE=sqlite
- EXECUTIONS_DATA_MAX_AGE=168
volumes:
- ./n8n_data:/home/node/.n8n
-
/n8n/はサーバ上の公開サブディレクトリxxxx(https://example.com/xxxx)とあわせる。
-
N8N_PROTOCLはhttpでよさそうだが、Apacheでhttpsでホストするのでhttpsにしたほうがよい
/etc/apache2/conf-available/app-n8n.conf(またはvirutlhost内に記載)
<Location /n8n>
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule ^/n8n/(.*) ws://localhost:5678/$1 [P,L]
ProxyAddHeaders On
ProxyPreserveHost On
</Location>
ProxyPass /n8n/ http://127.0.0.1:5678/
ProxyPassReverse /n8n/ http://127.0.0.1:5678/
- n8n自体は/でしかリクエストを受け付けられない
- https://example.com/n8n/でApacheリクエストを受けつけた後、n8n(127.0.0.1:5678)に転送する際に/n8n/を除去する動作にする
$ 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文字以上含む)を指定して登録する