GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

sovereign

sovereign – メール、カレンダー、連絡先、ファイル同期、IRCバウンサー、VPNなど、独自のプライベートクラウドを構築して維持するための一連の不可解な..

投稿日:

メール、カレンダー、連絡先、ファイル同期、IRCバウンサー、VPNなど、独自のプライベートクラウドを構築して維持するための一連の不可解なプレイブックです。

前書き

Sovereignは、完全にオープンソースソフトウェアに基づいて独自の個人向けクラウドを構築し、維持するために使用できるAnsibleプレイブックのセットです。

前もってAnabilitiesを使ったことがない人は、これらのプレイブックが役に立つツールを見つけることができます。

元の著者の背景と動機は興味深いかもしれません。 tl; dr:Google Appsの不満、プライバシーと長期サポートの懸念。

Sovereignは、合理的に安全でメンテナンス性が低く、便利なクラウドサービスを提供します。 それを使用して、あなたのサーバー、SSHを数週間おきに設定しますが、ほとんどそれについて忘れてしまいます。

提供するサービス

Sovereignをサーバーに向けるとどうなるでしょうか? すべての種類の良いもの!

  • Dovecot経由のSSL経由のIMAPSolrが提供する全文検索で完結。
  • SSL経由のPOP3 、Dovecot経由でも
  • Postfix経由のSSL over SMTP 。フィルタに遭遇する前に迷惑メールを捨てるためのDNSBLのセットが含まれています。
  • あなたの電子メールの仮想ドメインは、 PostgreSQLによってサポートされています
  • スパムはRspamdを介して戦っています
  • DKIMDMARCを使用してメールサーバーを検証するので、インターネットはメールサーバーが正当であることを認識します。
  • 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はcgitgitoliteでホスティングしています。
  • Wallabag経由でRead-it- later
  • moshhtopのような使いやすいツールがたくさんあり、サーバーとの生活をもっと簡単にすることができます。

上記のサービスの1つ以上を望んではいけませんか? site.ymlの関連する役割をsite.ymlます。 あるいは、プレイブックの中の関連するinclude:ディレクティブをより細かくコメントすることができます。

使用法

あなたが必要とするもの

  1. VPS(またはあなたがハードボールをしたい場合はベアメタルサーバー)。 私のVPSはLinodeでホストされています。 Apache、Solr、PostgreSQLの間に少なくとも512 MBのRAMが必要になるでしょう。 私の1024はあります。
  2. 64-bit Debian 8.3または同等のLinuxディストリビューション。 (あなたはどんなディストリビューションを使ってもかまいませんが、Debianから逸脱すると、プレイブックの調整が必要になります。
  3. 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







-sovereign

執筆者:

関連記事

関連記事はありませんでした