サーバー設定の忘備録7 openvpn編

参考にしたHPは以下。

LinuxにDockerでOpenVPNを簡単にインストールする方法 | 小茂根の暮らし

同じく、スクリプトもどきを貼り付けます。

mkdir -p ~/docker/openvpn && cd $_

PUID=`id -u`
PGID=`id -g`

#docker-compose.ymlを作る.
cat << EOF > docker-compose.yml
version: "3"
services:
  openvpn-as:
    image: linuxserver/openvpn-as
    container_name: openvpn-as
    cap_add:
      - NET_ADMIN
    privileged: true
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=Asia/Tokyo
      - INTERFACE=eth0 #optional
    volumes:
      - /var/docker/openvpn/data:/config
    ports:
      - 943:943
      - 9443:443    #443番ポートを他が使ってるので変更.
      - 1194:1194/udp
    restart: always
    networks:
      openvpn-network:
        ipv4_address: 172.20.0.2
        aliases:
          - openvpn.example.com

networks:
  openvpn-network:
    external: true
    
EOF

docker-compose up -d

注意点は、

  • 443番ポートを他のコンテナ(sslh)で使うので、9443に変更。
  • 割り当てられるIPアドレスを固定しているが、これが必要かは不明。
  • ユーザーIDとグループIDを取得して、その番号に合わせているが、それも合わせる必要があるか不明。
  • 管理者のパスワードを変更する処理を忘れない。

さて、管理者のパスアワード変更ですが、

docker exec -it openvpn-as passwd admin

と実行すると、パスワードを2回入れる事を求められるので、これで変更ができます。あとは、GUIでログインして設定をゴニョゴニョしてください。設定は参考HPなどを見ていただければよろしいかと。

カテゴリー: Linux、サーバー, PC関連 | コメントする

サーバー設定の忘備録6 wordpress編

ココがメイン。とはいえ、dockerなので、結構簡単です。参考HPは公式のdockerイメージより。

wordpress – Official Image | Docker Hub

スクリプトもどきを貼りまして、注意点は下記へ。

mkdir -p ~/docker/wordpress && cd $_

#docker-compose.ymlを作る
cat << EOF > docker-compose.yml
version: "3.7"

services:
  wordpress:
    image: wordpress #WordPressのイメージ
    container_name: wordpress-docker
    # ports: # ポートの指定はnginx-proxyでするのでここではしない
    #   "80:80"
    networks:
      nginx-proxy-network:
        aliases:
          - wordpress.example.com
    volumes:
      - /var/docker/wp/html:/var/www/html              #docker_wordpress/html にデータがマウントされる
      - /var/docker/wp/config:/usr/local/etc/php/conf.d/upload.ini
    environment:
      WORDPRESS_DB_HOST: wordpressdb:3306
      WORDPRESS_DB_USER: wordpressuser
      WORDPRESS_DB_NAME: wordpress-db          #WordPressの設定
      WORDPRESS_DB_PASSWORD: wordpresspassword #WordPressの設定
      VIRTUAL_HOST: example.com # nginx-proxyのホスト設定 ※本番では使用するFQDNなどにする。
      LETSENCRYPT_HOST: example.com # Let's Encryptのホスト設定 ※本番では使用するFQDNなどにする。
      LETSENCRYPT_EMAIL: xxx@example.com # Let's Encryptのメール設定
      LETSENCRYPT_TEST: "true" # Let's Encryptのテストかどうかのフラグ 本番ではfalseにする (指定しない とテスト扱いになる)
      CERT_NAME: example.com # ローカルで認証局を立てるときに使う ※本番ではLet's Encryptから直接取得するの でコメントアウトする
      #HTTPS_METHOD: noredirect # リダイレクトを無効にする
    depends_on:
      - mysql
    restart: always

  mysql:
    image: mariadb #MariaDBのイメージ
    container_name: wordpressdb
    ports:
      - "3306:3306" #他のMySQLとポートがバッティングする場合は変える 例) "33060:3306"
    networks:
      nginx-proxy-network:
        aliases:
          - wordpress.mqspl.example.com
    volumes:
      - /var/docker/wp/db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: mysql-root-pw
      MYSQL_DATABASE: wordpress-db
      MYSQL_USER: wordpressuser
      MYSQL_PASSWORD: wordpresspassword
    restart: always

networks:
  nginx-proxy-network:
    external: true

EOF

cat << EOF > /var/docker/wp/config/upload.ini
upload_max_filesize = 100M
post_max_size = 100M
EOF

docker-compose build --no-cache

#cat << EOF > php.ini
#upload_max_filesize = 100M
#post_max_size = 100M
#EOF
#
#docker cp ./php.ini wordpress-docker:/usr/local/etc/php/php.ini


docker-compose up -d

注意点は、

  • データベースのポート3306が他のコンテナや、ホストのデータベースと被ることがあるので、その時は変更すること。
  • phpの転送量増減が小さいので、php.iniを作ってコンテナの中に入れる。か、バインドマウントボリュームを作ってその中に記載した.confファイルを準備するか。
  • wordpressコンテナの待ち受けポートは記載しなくてよい。直接proxyコンテナから通信が80番ポートにダイレクトにやってくるので、docker networkさえ同じにしておけばOK.
カテゴリー: Linux、サーバー, PC関連 | コメントする

サーバー設定の忘備録5 Proxy+SSL編

今回参考にしたHPは以下。

Docker環境で簡単にSSL化する方法を解説 【失敗しない初心者でもできる方法】

今回は、以下のHPを参考にして作成していく。注意点は、

  • sslhをフロントに噛ませるので設定注意(とはいえ、proxyの設定を弄らなくて良い様に設定してるので、こちらはコピペで十分)

以下に同じくオマジナイを書くと.shとして使えそうなスクリプトを貼っておきます。

mkdir -p ~/docker/proxy && cd $_

#docker-compose.ymlを作る
cat << EOF > docker-compose.yml
version: '3.7'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    privileged: true
    environment:
      - "DHPARAM_GENERATION=false"
    ports:
      - 80:80
      - 443:443
    networks:
      nginx-proxy-network:
        aliases:
          - nginx-proxy.example.com
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - /var/docker/proxy/proxy:/usr/share/nginx/html
      - /var/docker/proxy/proxy:/etc/nginx/vhost.d
      - /var/docker/proxy/encrypt/certs:/etc/nginx/certs:ro
      #- /var/docker/conf.d:/etc/nginx/conf.d/proxy.conf:ro # 設定を上書きするときはconf.d内に「.conf」拡張子で追加する
    restart: always
    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"

  letsencrypt-nginx:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt-nginx
    privileged: true
    environment:
      - NGINX_PROXY_CONTAINER=nginx-proxy 
    networks:
      nginx-proxy-network:
        aliases:
          - letsencrypt-nginx.example.com
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/docker/proxy/proxy:/etc/nginx/vhost.d
      - /var/docker/proxy/proxy:/usr/share/nginx/html
      - /var/docker/proxy/encrypt/certs:/etc/nginx/certs:rw
    restart: always
    depends_on:
      - nginx-proxy

networks:
  default:
    external:
      name: bridge
  nginx-proxy-network:
    external: true

EOF

docker-compose build --no-cache
docker-compose up -d

注意点は特にないですが、バインドボリュームの設定を/var/dockerにしていますが、カレントディレクトリ以下でも良かったかもしれない。結局別のHDDをシンボリックリンクするんだし・・・

カテゴリー: Linux、サーバー, PC関連 | コメントする

サーバー設定の忘備録4 sslh編

 ChatGPTさんによると、

SSLHは、複数のプロトコルを1つのポートで同時に受け付けることができるオープンソースのプログラムです。具体的には、HTTP、HTTPS、SSH、OpenVPNなどのプロトコルを同じポート番号で受け付けることができます。
SSLHは、ポート番号を節約するために使用されます。通常、各プロトコルには異なるポート番号が必要ですが、SSLHを使用することで、1つのポート番号で異なるプロトコルを切り替えながら使用できます。
また、SSLHは、ファイアウォールの背後にあるサーバーにアクセスするために、HTTPS経由でSSH接続を行うような場合にも使用できます。

ChatGPT

だそうです。

インストール手順は以下に。先頭にオマジナイを書けば、.shファイルとして使えるはずです。

mkdir -p ~/docker/sslh && cd $_

#docker-compose.ymlを作る.
cat << EOF > docker-compose.yml
version: '3'
services:
  sslh:
	build:
  	context: sslh
	container_name: sslh
	ports:
  	- "443:443"
	environment:
  	TZ: Asia/Tokyo
  	LISTEN_IP: 0.0.0.0
  	LISTEN_PORT: 443
  	SSH_HOST: 192.168.0.22
  	SSH_PORT: 22
  	OPENVPN_HOST: openvpn-as
  	OPENVPN_PORT: 9443
  	HTTPS_HOST: nginx-proxy
  	HTTPS_PORT: 443
	restart: always
	networks:
  	nginx-proxy-network:
    	aliases:
      	- sslh.example.com
  	openvpn-network:
    	aliases:
      	- sslh.example.com
networks:
  nginx-proxy-network:
	external: true
  openvpn-network:
	external: true
   	 
EOF


mkdir sslh

#Dockerfileを作る
cat << EOF > sslh/Dockerfile
FROM alpine:latest

RUN apk update && \
	apk add --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ sslh && \
	rm -rf /var/cache/apk/*

ADD entry.sh /usr/local/bin/entry.sh
RUN chmod +x /usr/local/bin/entry.sh

ENTRYPOINT ["/usr/local/bin/entry.sh"]
EOF


#entry.shを作る.
cat << 'EOF' > sslh/entry.sh
#!/bin/sh

# コマンド表示
echo "sslh -f -u root --listen=${LISTEN_IP}:${LISTEN_PORT} \
 --ssh=${SSH_HOST}:${SSH_PORT} \
 --tls=${HTTPS_HOST}:${HTTPS_PORT} \
 --openvpn=${OPENVPN_HOST}:${OPENVPN_PORT}"
# コマンド実行
sslh -f -u root --listen=$LISTEN_IP:$LISTEN_PORT \
 --ssh=$SSH_HOST:$SSH_PORT \
 --tls=$HTTPS_HOST:$HTTPS_PORT \
 --openvpn=$OPENVPN_HOST:$OPENVPN_PORT
 
EOF

cd sslh
docker-compose pull
docker-compose build --no-cache
docker-compose up -d

ポイントは以下。

  • OPENVPN_HOST:この後作るopenvpnのコンテナの名前。
  • OPENVPN_PORT:この後作るopenvpnのポート番号。443だと他のコンテナと被るので適当に9443とした。
  • OPENVPN_PORT:この後作る、プロキシもどきのコンテナ名
  • OPENVPN_PORT:こちらのコンテナで443ポートを使う。
  • SSH_HOST、SSH_PORT:ssh接続を443番ポートで使うときの設定。特に使う予定が無ければ、存在しないIP何かを書いておけばいいのかな?今回は適当に書いています。SSH通信は他の番号を使ってるので。

参考にしたHPは以下。

DockerでSSLH!貴重な443番ポートでHTTPS、OpenVPN、SSHを同時に待ち受ける方法 | 小茂根の暮らし
https://komone-life.com/2020/03/24/how-to-install-sslh/

カテゴリー: Linux、サーバー, PC関連 | コメントする

サーバー設定の忘備録3

大まかな構成図を作ってみました。

自宅で普段使ってるPCとはローカルで繋がってます。書き忘れ。

さて、上記のような組み合わせを考えているので、どの辺りから入れていけばいいのかさっぱりわかりませんが、適当に入れていきます。

  1. sslh
  2. proxy+ssh
  3. wordpress
  4. openvpn
  5. mirakurun+epgstation
  6. tt-rss
  7. munin
  8. syncthing

上記の順番で入れました。

実際は3から始めて2,1は最後の方に入れながら設定を弄るのがいいのでしょうが、さんざん失敗したので、最後はこの方法で入れました。

(つづく)

カテゴリー: Linux、サーバー, PC関連 | コメントする

サーバー設定の忘備録2

ではまず、docker環境を整えましょう。

まっさらなOSなので、必要と思われるものをまず入れておく。

sudo apt update && sudo apt -y upgrade
sudo apt install -y curl vim openssh-server

続いて、dockerですが、aptで入るパッケージのバージョンが少し古いみたいなので、リポジトリを追加して、新しいヤツを入れたいと思います。

sudo apt update && \
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-compose

sudo usermod -aG docker $USER 	#このコマンドは、現在ログインしているユーザーをDockerグループに追加するために使用されます。 usermod コマンドは、ユーザーの属性を変更するために使用されます。 -a オプションは、既存のグループにユーザーを追加するために使用されます。-G オプションは、追加するグループを指定します。 docker は、追加するグループ名です。 $USER は、現在ログインしているユーザー名を表します。

以上でdocker環境のインストールが完了したはずです。最後のnewgrpは実行してもしなくてもよさそうです。

 次に、メインとなるdockerコンテナ(イメージ)の導入です。なるべく、公式の情報を引っ張ってきたいところですが、公式が出していない物もあるので、ネット情報を参考にやってみます。


 あらかじめ申しておきますが、IT素人が個人の趣味の範囲で楽しんでいる作業の忘備録ですので、この情報で何かありましても責任は取れません。悪しからず。

 docker周りの大まかなフォルダ構成は以下の様にするつもりです。
docker-compose.ymlなどは、Homeディレクトリ以下にdocker/とし、各docker-compose.ymlごとにディレクトリを分ける.

ボリュームはすべてバインドマウントボリュームに書き換えておく。すべてのバインドマンとボリュームを/var/docker以下に集めておく。たぶん、/varディレクトリをバックアップしておけば、復元が簡単になるはず・・・なってほしいなぁ。

次から本格的にdockerイメージ、コンテナの準備になります。

カテゴリー: Linux、サーバー, PC関連 | コメントする

サーバー設定の忘備録1

やっとおちついたので、ちょっとずつ更新していきます。

といいつつ、またごっそり消えるかもしれません。(なんか、鯖の挙動が私なみにアヤシイw)

まずはハードの情報。

  • CPU:Core i5 13600k
  • MB:MSI PRO B660M-E DDR4 (パソコン工房限定モデル)
  • メモリ:16GBバルク

この構成に、Ubuntu22.04 LTE をのせます。

こんな構成なのですが、はっきり言って失敗です。皆さんこの組み合わせは止めましょう。

まず、MBのネットワークアダプタがUbuntuに認識されません。この話は結構前から言われているのですが、まだ改善されていないようです。詳しくは、「Intel® I219V 1Gbps LAN controller」を認識しない、という問題です。

解決法はあるようで、グーグル先生に聞けばいくつか出てきます。

しかし、私の環境では一通りやってみましたがどの方法でも認識しなかったので、USB接続のネットワークインターフェイスを買ってきて、USB接続で通信環境を整えました。

あとは、13世代のCPUにffmpegのQSVを組み合わせようとしたときにちょっと解らなかった事があり、時間を取られたので、そのことも後日記すことにします。

 さて、前置きはさておき、今回は、Ubuntuの中にdocker環境を整え、可能な限りdockerで動かしてみる。という挑戦をしてみたいと思います。が、完全な素人なので、よく考えたら無駄だとか、何やってんの?とか突っ込みどころ満載かと思いますが、そんな方はサッサと有用な情報を求めてブラウザバックしていただけると幸いです。

カテゴリー: 駄文 | コメントする

誰も待っていないと思いますが

お待たせしました.HP復活です.(多分

さて,以前のサーバーがお亡くなりになって一月ちょっと掛かりましたが,無事通常運行できそうです.

と,書き連ねたいですが,今はこれまで.

カテゴリー: 駄文 | コメントする

Hello world!

WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。

カテゴリー: 未分類 | 1件のコメント