
VPS、自宅サーバでLinuxを使ってできること
前回の記事では2000年頃からLinuxで自宅サーバを公開し、10年ぐらい前からVPSを使って、Linuxサーバー(Redhat,WhiteBox,CentOS,Ubuntu Server,Arch Linux)を利用してきたことを書きました。
今回の記事では、Linuxサーバーを構築して何が出来るの?的な観点から、あれこれ書いてみたいと思います。
過去に僕が利用してきたサービスを列挙してみます。興味があるトピックのみでいいので、読んでみてください。
ファイルサーバー(Windows、Linux、Macとのファイル共有)〜Samba
まずは自宅サーバとしてWindows,Mac,Linux間でファイル共有するためにSambaを立てました。2012年頃まで使ってたけど、今はダサいというか、もっとスマートな手段があるので、Sambaは使いませんけど。OneDrive,iCloud,GoogleDriveその他Dropboxやら諸々のサービスが存在しますが、サブスクリプション制で月に数百円から千円ぐらいは課金されるので、今はフリーかつ、データ管理サーバが中央集権型ではない同期ツールsyncthingを利用してます。
Webサーバー 〜Apache, Nginx
2012年ぐらいまではWebサーバといえばApacheでしたが、それ以降はNginxしか使ってません。NginxはWebサーバーの機能だけでなく、リバースプロキシや、ロードバランサーとしても使えて便利ですよ。いくつもWordpressサイトやWebアプリを公開するなどもバーチャルホストで簡単にマルチドメインに対応できます。昔はめちゃめちゃ高額だったSSLもLet’s Encryptの登場以来、無料でSSLを取得できるようになりました。
Webアプリサーバー 〜 Tomcat,Struts,CakePHP,Ruby on Rails,NodeJS
2000年頃はJava+Tomcat、その次にStrutsとJava系をApacheと連携して利用してましたが、その後は、CakePHP、Ruby On Rails、NodeJSをNginxと連携して使ってます。
ダイナミックDNSで無料で自宅サーバ公開
昔は安価なVPSなんて存在しないし、自宅で固定IPを取得するのも高額だったので、グローバルIPがコロコロ定期的に変わる一般のADSL、光回線で独自ドメインを利用できるダイナミックDNSサービスを利用して、自宅サーバを公開しています。
ieserver がお気に入りで、つい5年ほど前まで利用していたのですが、サービスが終了しちゃったので、今はMyDNSを利用してます。日本にも世界にもいろんなDynamicDNSサービスが存在するので、お好みのもの、かつ、サービスが長期にわたり継続しているものを利用するのがおすすめです。
メールサーバー 〜 Postfix + Dovecot
ここ5年ぐらいは、メールなんて、ほんのお知らせ的な用途や、何らかのアカウント作成時に利用する程度になっちゃってますけど、昔はSNSもLINEなどのチャットツールもないし、もちろんスマホもなかったので、メールが主なメッセージ交換ツールでした。なので、2012年ぐらいまでは Postfix + Dovecotを利用して、メールサーバを構築してました。その頃まではGmailでも、他のメールサービスでも、普通に自宅サーバのメールを送受信出来ていましたが、セキュリティ的な観点から、どんどん厳しくなり、暗号化されないSMTP(Port25),Pop(Port110)はありえなくなり、暗号化されかつ、SPF+DKIMを利用する必要が出てきましたし、そもそもGmailなどの台頭で、メールクライアントというものもあまり利用されなくなっているので、今 本当にコストゼロに近い感じで小さな会社を立ち上げる的な用途以外では、メールサーバの構築はあまりされないかもですね。
スタートアップ系の企業も、独自ドメインを利用しつつGmailに1ユーザーあたり1000円ぐらい支払って、メールを使っているケースが多いかと。
とか言いつつ、このドメインではないですが、僕は独自ドメインでPostfix+Dovecotでメールサーバを運用してます。
GitLabサーバー
GitHubクローンのGitLabですね。いつでしたっけ?MicrosoftがGitHubを買収して、その後プライベートリポジトリが無償化されたのって?それまでは、プライベートリポジトリは有償だったので、GitLabのオンプレミス版を
導入して使ってます。小規模開発や、個人利用だと、これで十分です。ってか、GitLab自体を好きでサブスクリプションで利用して、使っているプロジェクトとかもあるので、結構おすすめです。
データベースサーバー 〜 Mysql,Postgresql,MariaDB
僕がプログラマーの仕事を始めた30年ほど前までは、業務系アプリのバックエンドといえばOracleかMicrosoft SQL Serverのいずれかを使うのが、一般的でした。コイツラはライセンス料が100万とか平気でしたので、一般人が遊びのアプリを公開するために利用できる代物ではありませんでした。
今ではめちゃめちゃ市民権を得てる Mysql(MariaDB),Postgresqlは、今や当たり前のようにオープンソースプロジェクトで利用されてます。とはいってもAWSを利用するとMysqlをスケーラブルにした感じの利用料がかかるRDSとかになってますけどね。個人で使う分にはAWSなんて、はっきり言ってお金の無駄なので、MariaDB,Postgresql,MongoDBなんかを使うといいですね。GCPのfirebaseも使いましたが、コストがかかる上に、なんだかあまり好みじゃなかったので普通に上記のオープンソースDBを使えばよいかと。
同期型ファイル共有 〜 Syncthing
WindowsやMacでデバイス間でファイルを共有したいニーズはあると思います。Windows,MacOS,iOS,Androidで OneDriveやiCloud,GoogleDrive、その他Dropboxなどなど各種サービスは存在しますが、こいつらもサブスクリプション料金が必要なので、Syncthingをというサービスを導入すれば、容量無制限でお持ちの全デバイス間で
ファイル共有できます。
ワードプレスでBlog公開 〜 WordPress
今どきBlogなんて公開する?という話はさておき、ブログを開設したいとか、企業のホームページを作りたいとか、そういうこともWordpressを導入すれば、無料で永続的に利用できます。VPSを借りたりした場合、独自ドメインを複数取って、1つのVPS契約で論理的には個数制限なしの、マルチドメインでWebサイトを公開できます。
WordPressも15年ぐらい使ってますが、そろそろ他にもっと良いのないかな?と探すんですが、有償だったり、機能が少なかったりするので、なんかまだWordpress?って感じもするのですが、Wordpressを使ってますね。
Notion,Evernote的なメモ共有サーバー 〜 dnote,Joplin
同期型のファイル共有サービスを使ってもよいのですが、メモを同期したいとかプロジェクトメンバー間でメモを共有したいとか、Evernote的なWebクリップもしたいとか、あれこれのニーズに応えるために、Notionや最近ではobsidianなどのサービスがあれこれありますが、コイツラもサブスクリプション料金が必要。無償でマルチプラットフォームに対応しているのでおすすめはSimpleNote。これはクラウドサービスなので、いつ有償化されてもおかしくない。なんで、メモぐらいの容量なら、dnoteかJoplinのサーバーを立てて、無料でお手軽メモ共有できたりします。
Googleフォト、iCloud的な写真共有サーバー 〜 immich
スマホが当たり前、128GBぐらいのスマホのストレージも当たり前の昨今、歳を重ねるごとに容量が増え続け、Google、Appleにサブスクリプション料金を払う必要がでてくる写真。月数百円なら我慢できるが、写真と動画の容量が100GBオーバーぐらいになってくると、1500円とか必要になってくるので、photoprismかimmichなどでGoogleフォトの代わりをさせてみるのもありですよ。
自宅サーバでこれをする場合、データが自宅にあるので、保存容量はほぼ無制限。ただ、例えば自宅の写真ストレージ(HDD or SSD)がぶっ壊れた場合、笑えないので、VPSなどを借りている場合は、そちらにバックアップしたりする必要はありますね。
無線LANのアクセスポイント 〜 hostapd
無線Wifiルーターなんて誰でも持っているので、ほぼ趣味ですが、Wifiルーターを構築することも出来ますよ。
プロジェクト管理 〜 Redmine, OpenProject
プロジェクト管理も、様々素敵なサービスがありますが、いずれもサブスクリプション料金が必要。Redmineは正直インターフェイスが古臭いですが、用途としては十分。今風のが良ければ、dockerを使ってOpenProjectを使ってみるのもありですよ。