Github: https://github.com/sovereign/sovereign
前書き
Sovereignは、完全にオープンソースソフトウェアに基づいて独自の個人向けクラウドを構築し、維持するために使用できるAnsibleプレイブックのセットです。
前もってAnabilitiesを使ったことがない人は、これらのプレイブックが役に立つツールを見つけることができます。
元の著者の背景と動機は興味深いかもしれません。 tl; dr:Google Appsの不満、プライバシーと長期サポートの懸念。
Sovereignは、合理的に安全でメンテナンス性が低く、便利なクラウドサービスを提供します。 それを使用して、あなたのサーバー、SSHを数週間おきに設定しますが、ほとんどそれについて忘れてしまいます。
提供するサービス
Sovereignをサーバーに向けるとどうなるでしょうか? すべての種類の良いもの!
- Dovecot経由のSSL経由のIMAP 、 Solrが提供する全文検索で完結。
- SSL経由のPOP3 、Dovecot経由でも
- Postfix経由のSSL over SMTP 。フィルタに遭遇する前に迷惑メールを捨てるためのDNSBLのセットが含まれています。
- あなたの電子メールの仮想ドメインは、 PostgreSQLによってサポートされています 。
- スパムはRspamdを介して戦っています 。
- DKIMとDMARCを使用してメールサーバーを検証するので、インターネットはメールサーバーが正当であることを認識します。
- EncFS経由で電子メールなどのためのディスク上のストレージを保護します。
- Roundcube経由のWebmail
- Z-Pushによるモバイルプッシュ通知。
- メールクライアントの自動設定 。
- Prosody経由のJabber / XMPPインスタントメッセージング。
- セルフォス経由のRSSリーダー。
- CalDAVおよびCardDAVを使用して、 ownCloudを使用してカレンダーと連絡先を同期させます。
- ownCloud経由で独自のプライベートストレージクラウド。
- OpenVPN経由であなた自身のVPNサーバー。
- ZNC経由のIRCバウンサー。
- すべてをスムーズに動かし続けるためのMonit (そして、そうでない時には警告する)。
- 収集してシステムの統計情報を収集します。
- Apacheを介したWebホスティング(例:ブログ用)。
- 複雑なファイアウォール(ufw)によるファイアウォール管理。
- rkhunterによるfail2banによる侵入防御とルートキット検出。
- rootログインと安全でないパスワード認証を防ぐSSH設定
- Google Authenticatorとさまざまなハードウェアトークンと互換性のあるRFC6238二要素認証
- Tarsnapへの夜間のバックアップ。
- gitはcgitとgitoliteでホスティングしています。
- Wallabag経由でRead-it- later
- moshやhtopのような使いやすいツールがたくさんあり、サーバーとの生活をもっと簡単にすることができます。
上記のサービスの1つ以上を望んではいけませんか? site.yml
の関連する役割をsite.yml
ます。 あるいは、プレイブックの中の関連するinclude:
ディレクティブをより細かくコメントすることができます。
使用法
あなたが必要とするもの
- VPS(またはあなたがハードボールをしたい場合はベアメタルサーバー)。 私のVPSはLinodeでホストされています。 Apache、Solr、PostgreSQLの間に少なくとも512 MBのRAMが必要になるでしょう。 私の1024はあります。
- 64-bit Debian 8.3または同等のLinuxディストリビューション。 (あなたはどんなディストリビューションを使ってもかまいませんが、Debianから逸脱すると、プレイブックの調整が必要になります。
- Tarsnapアカウントにはいくつかのクレジットがあります。 別のバックアップサービスを使用する場合は、これをコメントすることができます。 ホスティングプロバイダにバックアップを提供するか、または冗長性のために追加のバックアップサービスを使用することを検討してください。
SSL証明書を取得する必要はありません。 必要なSSL証明書は、サーバーの展開時に自動的にLet’s Encryptから取得されます。
インストール
リモートサーバー上
以下のステップは、リモートサーバ上で実行され、これらのコマンドを実行することによって実行されます。
1.必要なパッケージをインストールします。例えばDebianにaptitude
が必要です
apt-get install sudo python
2. Tarsnapのマシンキーを取得する
Tarsnapをダウンロードしてインストールしていない場合は、 Homebrewを使用する場合はbrew install tarsnap
を使用してください。
サーバーの新しいマシンキーを作成します。
tarsnap-keygen --keyfile roles/tarsnap/files/decrypted_tarsnap.key --user me@example.com --machine example.com
3.サーバーを準備する
うまくいって、rootパスワードを変更してください:
passwd
そのことを実行するためのユーザーアカウントを作成する:
useradd deploy
passwd deploy
mkdir /home/deploy
パスワードなしのsshログインを希望する場合は、ssh鍵を認可します(オプション)。
mkdir /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
nano /home/deploy/.ssh/authorized_keys
chmod 400 /home/deploy/.ssh/authorized_keys
chown deploy:deploy /home/deploy -R
echo 'deploy ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/deploy
あなたの新しいアカウントは、パスワードなしのsudo
ために自動的に設定されます。 あるいは、あなたのdeploy
ユーザをsudoグループに追加することもできます。
adduser deploy sudo
あなたのローカルマシンで
Ansible(サーバーを設定するツール)は、コンピュータ上でローカルに実行され、リモートサーバーにコマンドを送信します。 このリポジトリをあなたのマシンのどこかで、 Clone or Download > Download ZIP
上記のwget
、またはgit
いずれかを使ってClone or Download > Download ZIP
してください
git clone https://github.com/sovereign/sovereign.git
4.インストールを設定します
group_vars/sovereign
フォルダの設定を好みに合わせて変更します。 コンテキスト内での使用方法を確認したい場合は、対応する文字列を検索してください。 sovereignが機能するには、 group_vars/sovereign
すべての変数を設定する必要があります。
Gitのホスティングでは、あなたの公開鍵を場所にコピーしてください:
cp ~/.ssh/id_rsa.pub roles/git/files/gitolite.pub
最後に、ファイルhosts
内のhost.example.net
を置き換えhosts
。 SSHデーモンが非標準ポートで待機する場合は、IPアドレスの後ろにコロンとポート番号を追加します。 その場合は、ファイルroles/common/tasks/ufw.yml
Set firewall rules for web traffic and SSH
するタスクに独自のポートを追加する必要があります。
5. DNSをセットアップする
新しいドメイン名を購入したばかりの場合は、 LinodeのDNSマネージャーなどでそのドメイン名を指定してください。 ほとんどのVPSサービス(および一部のドメインレジストラも)は、無償でこれに使用できる管理されたDNSサービスを提供しています。 既に他の場所で管理されている既存のドメインを使用している場合は、おそらくいくつかのレコードを変更するだけです。
サーバーのIPアドレスを指すA
レコードまたはCNAME
レコードを作成します。
-
example.com
-
mail.example.com
-
www.example.com
(ウェブホスティング用) -
autoconfig.example.com
(電子メールクライアントの自動設定用) -
read.example.com
(Wallabagの場合) -
news.example.com
(セルフォス用) -
cloud.example.com
(ownCloud用) -
git.example.com
(cgit用)
6.不可解なプレイブックを実行する
まず、 Ansible 1.9.3以上がインストールされていることを確認します。
ダン全体のことを実行するには:
ansible-playbook -i ./hosts --ask-sudo-pass site.yml
パスワードなしのsudoデプロイメントユーザーを作成することを選択した場合は、– --ask-sudo-pass
引数を省略できます。
1つ以上の要素を実行するには、タグを使用します。 私は簡単に孤立した開発のためにすべての私のインクルードにタグをつけよ たとえば、ファイアウォールの設定に集中するには:
ansible-playbook -i ./hosts --tags=ufw site.yml
あなたはある時点で失敗するかもしれません。 おそらく、何かを手作業で行う必要があるからです。なぜなら、それを自動化する良い方法がないからです。 幸いにも、すべてのタスクは明確に名前が付けられているので、どこで停止したのかを知ることができるはずです。 私は手動の介入が必要な場合にコメントを追加しようとしました。
dependencies
タグは依存関係をインストールするだけで、他の操作は実行されません。 dependencies
タグに関連付けられたタスクは、 group_vars/sovereign
にあるユーザー提供の設定に依存しません。 dependencies
タグを含むプレイブックを実行することは、Docker画像で作業する場合に特に便利です。
7. DNSセットアップを完了します。
mail.example.com
をドメインのメールサーバーとして割り当てるexample.com
MX
レコードを作成します。
電子メールがDKIMチェックを通過するようにするには、 txt
レコードを追加する必要があります。 名前フィールドはdefault._domainkey.EXAMPLE.COM.
値フィールドには、DKIMが使用する公開鍵が含まれます。 必要な正確な値は、ファイル/var/lib/rspamd/dkim/EXAMPLE.COM.default.txt
にあります。 それは次のようになります:
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKKAQfMwKVx+oJripQI+Ag4uTwYnsXKjgBGtl7Tk6UMTUwhMqnitqbR/ZQEZjcNolTkNDtyKZY2Z6LqvM4KsrITpiMbkV1eX6GKczT8Lws5KXn+6BHCKULGdireTAUr3Id7mtjLrbi/E3248Pq0Zs39hkDxsDcve12WccjafJVwIDAQAB
DMARCでは、 txt
レコードも追加する必要があります。 名前フィールドは_dmarc.EXAMPLE.COM
で、値はv=DMARC1; p=none
なければなりませんv=DMARC1; p=none
v=DMARC1; p=none
。 DMARCの詳細はこちらをご覧ください 。
この投稿ごとに SPFと逆DNS を設定してください。 それがすべて機能していることを確認してください。たとえば、 check-auth@verifier.port25.comにメールを送付し 、 返信されるレポートを確認してください。
8.その他の設定
ZNC Webインターフェイスにサインインして、好きなように設定します。 ファイアウォールを介して公開されていないため、まずSSHトンネルを設定する必要があります。
ssh deploy@example.com -L 6643:localhost:6643
その後、Webブラウザでhttp:// localhost:6643に進みます。
同様に、サーバー監視ページにアクセスするには、別のSSHトンネルを使用します。
ssh deploy@example.com -L 2812:localhost:2812
もう一度Webブラウザでhttp:// localhost:2812に進みます。
最後に、新しい管理者アカウントでownCloudにサインインして設定します。 設定バックエンドとしてPostgreSQLを選択する必要があります。 データベースユーザーとデータベース名としてowncloud
を使用します。 データベースのパスワードassibleは、各サービスのランダムなパスワードのセットを作成し、それらをあなたのローカルフォルダのsecret
に保存し、 owncloud_db_password
ファイルのowncloud_db_password
使用します。
あなたの新しいパーソナルクラウドの使い方
私たちはwiki上で既知のクライアント設定を収集しています 。
トラブルシューティング
エラーが発生した場合は、 wikiページを確認してください 。 遭遇した問題がリストにない場合は、先に進んで問題を作成してください。 既にバグフィックスや回避策がある場合は、問題とwikiページにそれらを入れてください。
リブート
再起動時に暗号化されたボリュームのパスワードを手動で入力する必要があります。 これはソブリン固有のものではなく、むしろEncFSの仕組みの関数です。 再起動後にSSHを実行するか、コンソールインターフェイス経由でアクセスする必要があります。 一度あなたが入ったら、これを実行してください:
encfs /encrypted /decrypted --public
暗号化されたボリュームのパスワードを入力した後に、デーモンの一部を再起動する必要が生じる可能性があります。 一部のサービスは、 /decrypted
ボリュームが利用可能になり、デーモンユーザーアカウントに表示/decrypted
後にのみ利用可能なリソースを探している間に停止することがあります。
IRC
#sovereign
で質問し、フィードバックを提供して#sovereign
。