Git LFSをプライベートサーバーで運用する方法について

GitはGitHubを使いつつ、Git LFSはローカルのプライベートサーバーで運用する方法について調べてみました。(VPSなどで運用することもできますが、セキュリティには気を付けてください。)

※GitHubの無料プランではGit LFSのストレージ容量が1GBかつ転送量も1GB/月という制限があり、この制限を回避したいという理由です。

Git LFSに対応した実装はGit LFSのWikiにまとめられていますが、今回はgiftlessというPythonで実装されたものを使ってみました。

giftlessをサーバーにインストール

ソースコードのダウンロード

$ git clone https://github.com/datopian/giftless.git
$ cd giftless

Pythonの環境構築

$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install -r requirements.txt

pip installの代わりにpip3 installとする場合もあります。
invalid command 'bdist_wheel'というエラーが発生する場合はpip install wheelもしくはpip3 install wheelでうまくいく場合もあるみたいです。

giftlessの設定

$ vi giftless.conf.yaml
$ cat giftless.conf.yaml
# Giftless configuration
AUTH_PROVIDERS:
  - giftless.auth.allow_anon:read_write

giftlessの起動

(venv) $ GIFTLESS_CONFIG_FILE=giftless.conf.yaml ./flask-develop.sh

※他のPCからアクセスしたい場合は-hオプションでホストを指定する必要があります。
※ポート番号はデフォルトで5000番となっています。変更したい場合は-pオプションを使います。

(venv) $ GIFTLESS_CONFIG_FILE=giftless.conf.yaml ./flask-develop.sh -h 0.0.0.0 -p 8080

giftlessの起動方法

インストール完了後は下記のコマンドを実行することでgitflessを起動できます。

$ cd giftless
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ GIFTLESS_CONFIG_FILE=giftless.conf.yaml ./flask-develop.sh -h 0.0.0.0 -p 8080

Git LFSの使い方

giftlessの使い方としては特別なことはありませんが、簡単に紹介してみます。

リポジトリの複製

$ git clone git@github.com:yourname/example.git
$ cd example

Git LFSのインストール

$ git lfs install

Git LFSで管理したいファイルの設定

$ git lfs track file.zip
$ git lfs track "*.bin"
$ git lfs track "data/*"

Git LFSのURLを設定

$ git config -f .lfsconfig lfs.url "http://123.456.789.012:5000/yourname/example"

/yourname/exampleの部分は階層を増やしたり減らしたり好きなように設定にできるみたいです。
git config --add lfs.url "http://123.456.789.012:5000/"とすることもできますが、この場合、新しくgit cloneした時にGit LFSで管理しているファイルの取得でエラーが発生してしまいます。再度lfs.urlを設定した後にgit pullしてみてください。

作業した結果を反映

$ git add -A
$ git commit -m "コメント"
$ git push

リンク

Implementations · git-lfs/git-lfs Wiki · GitHub
https://github.com/git-lfs/git-lfs/wiki/Implementations

GitHub – datopian/giftless
https://github.com/datopian/giftless

Git Large File Storage
https://git-lfs.github.com/

Raspberry PiにFTPサーバーをインストールする方法

Raspberry PiでFTPサーバー(vsftpd)を運用する手順について。

インストール

$ sudo apt install vsftpd

設定

$ sudo vi /etc/vsftpd.conf

vsftpd.confで設定できる内容は以下のような感じです。

anonymous_enableAnonymousでのログインを許可する場合はYES
local_enableローカルユーザー(piやuseraddで作成したユーザー)でのログインを有効にする場合はYES
write_enableFTPサーバーへの書き込みを有効にする場合はYES
local_umaskumaskの設定(デフォルトは077)
chroot_local_userホームディレクトリより上の階層にアクセスできるようにする場合はYES
pasv_enableパッシブモードを有効にする場合はYES
vsftpd.confで設定できる主な内容

※パスワードを設定していない場合や忘れてしまった場合は、sudo passwd ユーザー名で設定できます。

FTPサーバーの起動

$ sudo service vsftpd restart

530 Login incorrect

FTPクライアントからユーザー名とパスワードを入力した際530 Login incorrectとなる場合はユーザー名かパスワードをミスタイプしているか可能性があるので再確認してみてください。

その他、該当ユーザーのログインシェルをnologingit-shellなどにしている場合も同様のエラーとなるようです。

$ sudo usermod -s /bin/bash ユーザー名

でログインシェルを変更できます。必要に応じて試してみてください。

Firefoxの動作が遅い時に試してみたいこと

最近、Firefoxの動作が遅い感じです(特にファイルの保存をする時など)。

調べてみるとプロファイルフォルダーのサイズが数GBを超えていて、その大半がcontent-prefs.sqliteというファイルでした。

サイト毎のズームレベルなどの情報が保存されているファイルみたいですが、削除してリセットすることもできるようなので試してみました。

content-prefs.sqliteを削除する方法

  1. [ヘルプ] » [トラブルシューティング情報] を実行
  2. プロファイルフォルダーディレクトリーの項目にあるフォルダーを開くのボタンをクリック
  3. Firefoxを終了
  4. プロファイルフォルダー内のcontent-prefs.sqliteを削除
    (心配な場合はリネームしておくこともできます。)

自分の環境では嘘みたいに軽くなりました。
最近重くなったなと感じる人は試してみてもいいかなと思います。

リンク

Firefox uses too much memory or CPU resources – How to fix | Firefox Help
https://support.mozilla.org/en-US/kb/firefox-uses-too-much-memory-or-cpu-resources