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/にアクセスする

image-20260301205610191

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

関連記事