{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/tag/self-host/feed/json/ -- and add it your reader.", "home_page_url": "https://matoken.org/blog/tag/self-host/", "feed_url": "https://matoken.org/blog/tag/self-host/feed/json/", "language": "ja", "title": "self-host – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "http://matoken.org/blog/?p=3524", "url": "https://matoken.org/blog/2022/03/11/nitter-upgrade-note2022-03/", "title": "nitter\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u30e1\u30e2(2022-03)", "content_html": "
Nitter\u3092\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u3057\u3066\u3044\u307e\u3059\uff0e
\n\u6700\u65b0\u306b\u8ffd\u5f93\u3057\u3066\u3044\u308b\u306e\u3067\u3059\u304c\uff0c\u4ee5\u524d\u3068\u5c11\u3057\u624b\u9806\u304c\u5909\u308f\u3063\u3066\u3044\u308b\u306e\u3067\u4e0a\u306e\u8a18\u4e8b\u306b\u88dc\u8db3\u3059\u308b\u5f62\u3067\u30e1\u30e2\u3057\u3066\u304a\u304d\u307e\u3059\uff0e
\n\n
$ sudo su - nitter\t(1)\n$ cd ~/nitter\t(2)\n$ git pull\t(3)\n$ pandoc ./README.md -o - | w3m -T text/htm\n$ export PATH=~/nim-1.6.4/bin:${PATH}\t(4)\n$ echo $PATH\n/home/nitter/nim-1.6.4/bin:/home/nitter/bin:/usr/local/bin:/usr/bin:/bin\n$ nim -v\t(5)\nNim Compiler Version 1.6.4 [Linux: amd64]\nCompiled at 2022-02-09\nCopyright (c) 2006-2021 by Andreas Rumpf\n\ngit hash: 7994556f3804c217035c44b453a3feec64405758\nactive boot switches: -d:release\nnitter \u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u5909\u66f4nitter \u306esource\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3078\u79fb\u52d5nitter \u306esource\u3092pullnim \u306e PATH \u3092\u901a\u3059nim \u304c\u4f7f\u3044\u305f\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5411\u3044\u3066\u3044\u308b\u306e\u3092\u78ba\u8a8d$ nimble build -d:release\n$ nimble scss\n$ vi public/md/about.md\t(1)\n$ nimble md\t(2)\n$ diff -u ./nitter.example.conf ./nitter.conf\t(3)\n--- ./nitter.example.conf 2022-02-15 00:03:01.628730418 +0900\n+++ ./nitter.conf 2022-03-11 22:53:41.944448701 +0900\n@@ -1,11 +1,11 @@\n [Server]\n-address = \"0.0.0.0\"\n-port = 8080\n-https = false # disable to enable cookies when not using https\n+address = \"localhost\"\n+port = 8081\n+https = true # disable to enable cookies when not using https\n httpMaxConnections = 100\n staticDir = \"./public\"\n title = \"nitter\"\n-hostname = \"nitter.net\"\n+hostname = \"nitter.matoken.org\"\n\n [Cache]\n listMinutes = 240 # how long to cache list info (not the tweets, so keep it high)\n@@ -25,6 +25,7 @@\n enableRSS = true # set this to false to disable RSS feeds\n enableDebug = false # enable request logs and debug endpoints\n proxy = \"\" # http/https url, SOCKS proxies are not supported\n+#proxy = \"http://153.121.44.87:8888\" # http/https url, SOCKS proxies are not supported\n proxyAuth = \"\"\n tokenCount = 10\n # minimum amount of usable tokens. tokens are used to authorize API requests,\n@@ -42,4 +43,4 @@\n replaceInstagram = \"\"\n proxyVideos = true\n hlsPlayback = false\n-infiniteScroll = false\n+infiniteScroll = true\n$ vi ./nitter.conf\n$ exit\n$ sudo service nitter restart\n
${NITTER_URL}/about \u306e\u5143\u306b\u306a\u308b about.md \u3092\u7de8\u96c6nitter.conf \u3092\u78ba\u8a8d\u3057\u3066\u8a2d\u5b9a\u306e\u5897\u6e1b\u304c\u3042\u3063\u305f\u3089\u8ffd\u5f93\u3059\u308b\u4ee5\u524d\u306f\u306a\u304b\u3063\u305fabout.md\u306f\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u8ab0\u304c\u7ba1\u7406\u3057\u3066\u3044\u307e\u3059\u3068\u66f8\u3044\u3066\u304a\u304f\u306e\u3082\u3044\u3044\u304b\u306a\u3068\u601d\u3044\u307e\u3059\uff0e
\n\u8a2d\u5b9a\u306eproxy\u3092\u4f7f\u3046\u3068\uff0cTwitter\u306b\u30a2\u30af\u30bb\u30b9\u5236\u9650\u3055\u308c\u305f\u3068\u304d\u306b\u7c21\u5358\u306b\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u305d\u3046\u3067\u3059\uff0e
$ git -C ~nitter/nitter log -1\ncommit 2dc91f8453ce904d1b07a933e8a1dc970d788c41 (HEAD -> master, origin/master, origin/HEAD)\nMerge: ecb6fe4 9b97ddc\nAuthor: Zed <zedeus@pm.me>\nDate: Thu Mar 10 16:46:14 2022 +0100\n\n Merge pull request #571 from jackyzy823/fix-listmember\n\n Fix list members not displaying\n$ w3m -dump http://localhost:8081/about | grep ^Version\\\nVersion 2022.03.10-2dc91f8\n$ nim -v\nNim Compiler Version 1.6.4 [Linux: amd64]\nCompiled at 2022-02-09\nCopyright (c) 2006-2021 by Andreas Rumpf\n\ngit hash: 7994556f3804c217035c44b453a3feec64405758\nactive boot switches: -d:release\n$ dpkg-query -W apache2 redis* libsass-dev certbot\napache2 2.4.38-3+deb10u7\ncertbot 0.31.0-1+deb10u1\nlibsass-dev:amd64 3.5.5-4\nredis-server 5:5.0.14-1+deb10u2\nredis-tools 5:5.0.14-1+deb10u2\n lsb_release -dr\nDescription: Debian GNU/Linux 10 (buster)\nRelease: 10\n$ arch\nx86_64\n
Nitter\u3068\u3044\u3046Twitter\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u304c\u3042\u308a\u307e\u3059\uff0e\u6700\u8fd1\u306fTwitter\u304c\u91cd\u304f\u3066\u306a\u306b\u304b\u691c\u7d22\u3057\u3088\u3046\u3068\u601d\u3063\u3066\u3082\u5f85\u3061\u9577\u304b\u3063\u305f\u308a\u753b\u50cf\u8aad\u307f\u8fbc\u307f\u5931\u6557\u3057\u305f\u308a\u3068\u3044\u3063\u305f\u3053\u3068\u3082\u3088\u304f\u3042\u308a\u307e\u3059(PC\u306e\u30b9\u30da\u30c3\u30af\u3068\u56de\u7dda\u304c\u7d30\u3044\u305b\u3044\u3082\u5927\u304d\u3044\u3067\u3059\u304c)\uff0e\u8efd\u91cf\u30d6\u30e9\u30a6\u30b6\u3092\u4f7f\u3063\u305f\u308a\u3082\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u305d\u3046\u3059\u308b\u3068\u898b\u305f\u76ee\u3084\u4f7f\u3044\u52dd\u624b\u304c\u3044\u307e\u3044\u3061\uff0e
\n\u305d\u3057\u3066\u73fe\u5728\u305d\u3046\u3044\u3063\u305f\u8efd\u91cf\u30d6\u30e9\u30a6\u30b6\u306f\u5229\u7528\u3082\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e
\n\n\n\n\nThis browser is no longer supported.
\n
\nPlease switch to a supported browser to continue using twitter.com. You can see a list of supported browsers in our Help Center.
\u305d\u3053\u3067 Nitter \u3092\u8a66\u3057\u3066\u307f\u305f\u3068\u3053\u308d\u8efd\u304f\u3066\u3044\u3044\u611f\u3058\u3067\u3059\uff0e
\n\u73fe\u5728\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u306f\u306a\u3044\u306e\u3067\uff0c\u6295\u7a3f\u3084\u975e\u516c\u958bTweet\u3084\u975e\u516c\u958b\u30ea\u30b9\u30c8\u306a\u3069\u306f\u4f7f\u3048\u307e\u305b\u3093\u304c\uff0c\u30a4\u30d9\u30f3\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u30bf\u30b0\u3092\u8ffd\u3063\u305f\u308a\uff0c\u904e\u53bb\u306etweet\u3092\u691c\u7d22\u3068\u3044\u3063\u305f\u3053\u3068\u3092\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\uff0e
\nRSS\u5f62\u5f0f\u3067\u306e\u51fa\u529b\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\uff0e
\n\u8efd\u91cf\u3067\u4fbf\u5229\u306a\u306e\u3067\u30ed\u30ab\u30fc\u30eb\u30de\u30b7\u30f3\u3067Nitter\u3092\u52d5\u304b\u3057\u3066\u5916\u306bURL\u3092\u5171\u6709\u3059\u308b\u3068\u304d\u306f https://nitter.net/ \u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\uff0e
\n\u3068\u3044\u3046\u8a71\u3092\u4ee5\u524d\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30ab\u30f3\u30d5\u30a1\u30ec\u30f3\u30b92020\u798f\u5ca1\u5185\u306e\u9e7f\u5150\u5cf6\u3089\u3050\u306e\u30b3\u30de\u3067\u767a\u8868\u3057\u307e\u3057\u305f\uff0e
\n\u3057\u304b\u3057\uff0c\u6700\u8fd1\u306f https://nitter.net/ \u304cTwitter\u306e\u5236\u9650\u306b\u639b\u304b\u3063\u3066\u5229\u7528\u3067\u304d\u306a\u3044\u3053\u3068\u304c\u591a\u304f\u306a\u3063\u3066\u304d\u307e\u3057\u305f\uff0e\u306a\u306e\u3067\u81ea\u5206\u306eVPS\u4e0a\u306b\u30db\u30b9\u30c8\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\n| \n Note \n | \n\n\u540c\u3058\u624b\u9806\u3067 Raspberry Pi OS buster armhf \u3084 Debian sid(nim\u306fDebina\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u3082\u306e\u5229\u7528)\u3067\u3082\u52d5\u4f5c\u3057\u307e\u3057\u305f\uff0e | \n
Nitter\u304c\u4f9d\u5b58\u3057\u3066\u3044\u308b Redis \u3068 libsass \u3092\u5c0e\u5165\u3057\u3066\u304a\u304d\u307e\u3059\uff0e
$ sudo apt install redis-server libsass-dev\nNitter\u3092\u5c02\u7528\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u52d5\u304b\u3057\u305f\u3044\u306e\u3067 nitter \u30e6\u30fc\u30b6\uff0c\u30b0\u30eb\u30fc\u30d7\u3092\u4f5c\u3063\u3066\u305d\u306e\u30e6\u30fc\u30b6\u3067\u64cd\u4f5c\u3057\u307e\u3059\uff0e
$ sudo groupadd nitter (1)\n$ sudo useradd -m -g nitter nitter (2)\n$ sudo -iu nitter (3)\nnitter \u30b0\u30eb\u30fc\u30d7\u3092\u4f5c\u6210nitter \u30e6\u30fc\u30b6\u3092\u4f5c\u6210nitter \u30e6\u30fc\u30b6\u306e\u30b7\u30a7\u30eb\u3092\u958b\u304fNitter\u306fnim-lang\u3067\u51fa\u6765\u3066\u3044\u307e\u3059\uff0eNitter\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u306b\u306fnim 1.2.0\u4ee5\u4e0a\u304c\u5fc5\u8981\u3067\u3059\u304c\uff0cDebian buster\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u7248\u306enim\u306f 0.19.4 \u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u51fa\u6765\u307e\u305b\u3093\uff0ebuster-backports \u3082 1.0.4-1~bpo10+1 \u3068\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\uff0e(bullseye\u306f1.4.2)
$ nimble build -d:release\n Verifying dependencies for nitter@0.1.0\n Tip: 2 messages have been suppressed, use --verbose to show them.\n Error: Unsatisfied dependency: nim (>= 1.2.0)\n$ dpkg-query -W nim\nnim 0.19.4-1\n\u3068\u308a\u3042\u3048\u305anim\u306e\u516c\u5f0f\u30b5\u30a4\u30c8\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u5229\u7528\u3057\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\uff0e
\n$ wget https://nim-lang.org/download/nim-1.4.2-linux_x64.tar.xz \\\nhttps://nim-lang.org/download/nim-1.4.2-linux_x64.tar.xz.sha256 (1)\n$ sha256sum -c ./nim-1.4.2-linux_x64.tar.xz.sha256 (2)\nnim-1.4.2-linux_x64.tar.xz: OK\n$ tar tvf nim-1.4.2-linux_x64.tar.xz | lv (3)\n$ tar xvf nim-1.4.2-linux_x64.tar.xz (4)\nNitter\u306esource\u3092clone\u3057\u3066\u3055\u3063\u304d\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u5c55\u958b\u3057\u305fnim\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u307e\u3059\uff0e
\n$ git clone https://github.com/zedeus/nitter\n$ cd nitter\n$ PATH=~/nim-1.4.2/bin:$PATH nimble build -d:release\n$ PATH=~/nim-1.4.2/bin:$PATH nimble scss\n$ mkdir ./tmp\nRedis \u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u306e\u3092\u78ba\u8a8d\u3057\u3066 nitter \u3092\u8d77\u52d5\u3057\u3066\u307f\u307e\u3059\uff0e\u3053\u306e\u72b6\u614b\u3067 8080 \u30dd\u30fc\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066 Nitter \u304c\u5229\u7528\u3067\u304d\u308b\u306e\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e\u30dd\u30fc\u30c8\u756a\u53f7\u306a\u3069\u306f nitter.conf \u3067\u5909\u66f4\u3067\u304d\u307e\u3059\uff0e
$ ps -ef|grep -i redis (1)\nredis 11786 1 0 Feb11 ? 00:15:28 /usr/bin/redis-server 127.0.0.1:6379\n$ ./nitter & (2)\n$ w3m http://localhost:8080/ (3)\n$ kill %1 (4)\n$ exit (5)\nnitter \u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u629c\u3051\u308b\u6b21\u306bNitter\u306b\u8d77\u52d5\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\uff0eSystemd\u74b0\u5883\u306a\u306e\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b5\u30fc\u30d3\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e
\n[Unit]\nDescription=Nitter (An alternative Twitter front-end)\nAfter=syslog.target\nAfter=network.target\n\n[Service]\nType=simple\n\n# set user and group\nUser=nitter\nGroup=nitter\n\n# configure location\nWorkingDirectory=/home/nitter/nitter\nExecStart=/home/nitter/nitter/nitter\n\nRestart=always\nRestartSec=15\n\n[Install]\nWantedBy=multi-user.target\n
\u30b5\u30fc\u30d3\u30b9\u3092\u6709\u52b9\u306b\u3057\u3066Nitter\u3092\u8d77\u52d5\u3057\u307e\u3059\uff0e
\n$ sudo systemctl enable --now nitter.service\n$ systemctl status nitter\n\u25cf nitter.service - Nitter (An alternative Twitter front-end)\n Loaded: loaded (/etc/systemd/system/nitter.service; enabled; vendor preset: enabled)\n Active: active (running) since Wed 2021-02-17 01:13:07 JST; 34s ago\n Main PID: 19702 (nitter)\n Tasks: 1 (limit: 4696)\n Memory: 3.6M\n CGroup: /system.slice/nitter.service\n \u2514\u250019702 /home/nitter/nitter/nitter\n$ w3m http://localhost:8080/\n\u5916\u306b\u516c\u958b\u305b\u305a\uff0c\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u4f5c\u3055\u305b\u308b\u5834\u5408\u306f\u3053\u3053\u307e\u3067\u306e\u624b\u9806\u3067OK\u3067\u3059\uff0e
\n\u203b\u3053\u306e\u624b\u9806\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u304b\u3059\u5834\u5408\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\uff0e
\n\u4eca\u56de\u306f\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0eDNS\u3092\u8a2d\u5b9a\u3057\u3066 nitter.matoken.org \u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e\u8a2d\u5b9a\u30df\u30b9\u3057\u305f\u3068\u304d\u306b\u30ea\u30ab\u30d0\u30ea\u3057\u3084\u3059\u3044\u3088\u3046\u306bTTl\u3092\u77ed\u304f\u8a2d\u5b9a\u3057\u3066\u3046\u307e\u304f\u884c\u3063\u305f\u3089\u3044\u3064\u3082\u306e\u9577\u3055\u306b\u3057\u307e\u3059\uff0e
\n\u8a3c\u660e\u66f8\u306fcertbot\u3092\u4f7f\u3044Let\u2019s encrypt\u3067\u4f5c\u6210\u3057\u307e\u3057\u305f\uff0e
\n$ sudo certbot certonly -d nitter.matoken.org\n\u203b\u3053\u306e\u624b\u9806\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u304b\u3059\u5834\u5408\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\uff0e
\nNitter\u3092\u305d\u306e\u307e\u307e\u5916\u306b\u516c\u958b\u3059\u308b\u306e\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u7684\u306b\u826f\u304f\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\uff0capache httpd\u3067httpd\u306e\u51e6\u7406\u3092\u3057\u3066Nitter\u306e8080\u306b\u8ee2\u9001\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u305f\uff0e
\nNitter\u7528\u306eapache httpd\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\uff0e
\n<VirtualHost *:80>\n ServerName nitter.matoken.org\n Redirect permanent / https://nitter.matoken.org/\n</VirtualHost>\n<IfModule mod_ssl.c>\n<VirtualHost *:443>\n ServerName nitter.matoken.org\n ServerAdmin webmaster@matoken.org\n\n <Proxy *>\n Order deny,allow\n Allow from all\n </Proxy>\n\n ProxyPreserveHost On\n ProxyPass / http://127.0.0.1:8080/ nocanon\n ProxyPassReverse / http://127.0.0.1:8080/\n AllowEncodedSlashes On\n\n ErrorLog ${APACHE_LOG_DIR}/error.nitter.matoken.org.log\n CustomLog ${APACHE_LOG_DIR}/access.nitter.matoken.org.log combined\n\n SSLCertificateFile /etc/letsencrypt/live/nitter.matoken.org/fullchain.pem\n SSLCertificateKeyFile /etc/letsencrypt/live/nitter.matoken.org/privkey.pem\n\n</VirtualHost>\n</IfModule>\n\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3057\u3066\u30c6\u30b9\u30c8\u5f8c\u53cd\u6620\u3057\u307e\u3059\uff0e
\n$ sudo a2ensite nitter.matoken.org.conf (1)\n$ sudo apache2ctl configtest (2)\n$ sudo systemctl reload apache2 (3)\n\u3053\u306e\u72b6\u614b\u3067 http://nitter.matoken.org/ \u53ca\u3073 https://nitter.matoken.org/ \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u307f\u3066 Nitter \u304c\u5229\u7528\u3067\u304d\u305f\u3089OK\u3067\u3059\uff0e
\n\u3068\u308a\u3042\u3048\u305a\u4e00\u822c\u516c\u958b\u3057\u3066\u304a\u304d\u307e\u3059\u304c\uff0c\u4eca\u306e https://nitter.net \u307f\u305f\u3044\u306b\u30a2\u30af\u30bb\u30b9\u5236\u9650\u304c\u3057\u3087\u3063\u3061\u3085\u3046\u304b\u304b\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3089\u5236\u9650\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e
\n$ git -C ~nitter/nitter log -1\ncommit f392b6ca37e66c7c759aa98db23e0bdc62b39c3d (HEAD -> master, origin/master, origin/HEAD)\nAuthor: Lukas Winkler <github@lw1.at>\nDate: Sun Feb 14 12:49:09 2021 +0100\n\n run optipng -o 9 on all images (#337)\n$ dpkg-query -W apache2 redis* libsass-dev certbot\napache2 2.4.38-3+deb10u4\ncertbot 0.31.0-1+deb10u1\nlibsass-dev:amd64 3.5.5-4\nredis-server 5:5.0.3-4+deb10u2\nredis-tools 5:5.0.3-4+deb10u2\n$ lsb_release -dr\nDescription: Debian GNU/Linux 10 (buster)\nRelease: 10\n$ uname -m\nx86_64\n