🦎

terraform で Outline VPN 環境を構築する

2024/08/22に公開

Outline VPNをTerraformで簡単に構築する方法

概要

この記事では、Terraformを使用してOutline VPNのVPNサーバーを簡単に構築する手順を紹介します。
自分専用のVPNサーバーを立ち上げて利用したい方にとって、参考になればと思います。

Outline VPNとは?

Outline VPNは、プライバシー保護やインターネットアクセス制限の回避を目的としたオープンソースのVPNソリューションです。

全体像

今回作成するインフラ構成は以下のようなものです。

Outlineクライアント -> VPNサーバー(LightSail) -> ネットワーク

クライアントはOutlineアプリケーションを通じてVPNサーバーに接続し、そこからインターネットへアクセスします。

設定手順

前提条件

以下のツールがインストールされ、設定済みであることが前提です。

  • Terraform
  • Docker
  • AWS CLI

1. リポジトリをクローンする

まず、必要なリポジトリをクローンします。

git clone git@github.com:yoppyDev/iac-templates.git
cd iac-templates/terraform/outline

2. インフラ構築

次に、Terraform Cloudで以下の環境変数を設定します。
設定方法はこちらの記事が参考になると思います。

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

その後、terraform.tfファイルのOrganization設定を自分のものに変更します。

terraform.tf
terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
      version = "5.63.0"
    }
  }

  cloud {
    organization = "YP"  # ここを自身のorganizationに変更

    workspaces {
      name = "outline"
    }
  }
}

必要に応じて環境変数の値も変更してください。

variables.tf
variable "aws_region" {
  type    = string
  default = "ap-northeast-1"
}

variable "bundle_id" {
  type    = string
  default = "nano_3_0"
}

variable "blueprint_id" {
  type    = string
  default = "amazon_linux_2	"
}

variable "AWS_ACCESS_KEY_ID" {
  type      = string
  sensitive = true
}

variable "AWS_SECRET_ACCESS_KEY" {
  type      = string
  sensitive = true
}

次に、Terraformを使用してインスタンスを起動します。

terraform init
terraform apply

3. インスタンスにSSH接続

インスタンスが起動したら、SSHで接続します。

chmod +x util.sh
./util.sh save_private_key
ssh -i ./outline_key.pem ec2-user@$(terraform output -raw static_ip_address)

4. Outline Serverのインストール

最後に、サーバー内でOutline Serverをインストールします。

sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)"

インストールが完了すると、以下のような出力が表示されます。

{"apiUrl": "https:://xxx.xxx", "certSha256": "xxxxxx"}

この情報は、Outline ManagerでVPNサーバーを設定する際に使用しますので、コピーしておいてください。

5. Online Manager のインストールと設定

自身の環境に合わせてOutline Managerをインストールします。インストールはこちらから行えます。

インストールが完了すると、以下の画面が表示されますので、Amazon Lightsailを選択します。

outline-manager-setting_01.png

先ほどコピーしたapiUrlcertSha256を貼り付け、「完了」をクリックします。

outline-manager-setting_02.png

これでOutline Managerでの設定は完了です。

あとは、VPNを利用したいデバイスにOutline VPNクライアントをインストールし、Outline Managerで発行したトークンを入力して接続するだけです!

6. 環境の削除

不要になった場合は、以下のコマンドでインフラを削除できます。

terraform destroy

自分専用のVPNを構築してみたいという方にとって、参考になる内容になっていれば幸いです。
もし何か不明点があれば、気軽にコメントをお寄せください。皆さんのお役に立てることを楽しみにしています。

Discussion