Blog / Archive
-
4 May 2026 Server update
Thought I´d give a little update on the last post.
I am contemplating moving Kanji Koohii to a fully self-managed server. To be fair the shared hosting at HostGator is pretty decent, but it has occasional issues like recently the Php sessions are not working properly which causes login issues (do check the "Remember me" option for now).
It's also something interesting for me to learn. In theory the response time of the server on a VPS will be more stable.
I tried first with managed VPS on Cloudways and didn't like it. Next I tried Digital Ocean and my experience was pretty bad: dashboard wasn't working at all. Couldn't create a "droplet". Then I moved to Linode and it's great! The dashboard on Linode (Akamai) is super clear and easy to use.
I created a 2vCPU 4GB Linode, which should comfortable run Kanji Koohii. Some years ago I would never have tried this because it felt overwhelming but now with ChatGPT and Gemini I'm a lot more confident. I created a full checklist of all the steps to go through like basic security, enabling Ubuntu Pro, firewall, virtual hosts, SSL etc.
I picked a datacenter on the US West Coast (Los Angeles). I did some basic ping tests and in theory it should give the best compromise for US and Japan which are the top two countries for Kanji Koohii users. So compared to current server in central US the ping for Japan should be a little better like ~150 ms, should be lower for US. For EU it should be about the same than it is now anywhere from 200-350ms. If I picked a datacenter in Frankfurt for example of course EU users would have a very low ping, but US and Japan would be worse.
Right now I setup all the basic security stuff including SSH, firewall, changing the default ports, etc. Now I am learning about setting up the SSL certificates for HTTPS.
Next I will set up the database. It will run on mariadb instead of MySQL.
So far, for the nerd in me at least, it's pretty exciting. Finally I can install useful tools like fzf (fuzzy search), mc (Midnight Commander) etc.
For monitoring I think I will use Uptime Robot and maybe Netdata, so I can have health checks on a mobile app and be alerted if the site goes down.
I will publish the full checklist of all the steps I took to set up the server so anyone experienced can review it and give me some tips if I forgot something!
-
27 April 2026 Moving server?
I signed up for Cloudways Flexible Managed VPS and will be experimenting with running the site on a server from Digital Ocean. In theory it should perform better than the shared hosting.
I picked a San Francisco data center. I ran some tests on globalping.io and it seems like that would be the better compromise with US and Japan being the top two countries where users connect from. With SFO I have a ping of ~110 for Japan, sub-100 for US obviously, and ~150 for Germany. If I picked a datacenter in Europe the ping was ~230 for Japan. So it seems like West Coast US datacenter would be best.
Server is 2GB RAM, 2 vCPU. That would be almost the same as I currently pay for shared hosting on HostGator. I have no idea if it will really perform better though. According to ChatGPT it will "crush" a shared hosting but I really don't know. I guess the plus side is with the Managed VPS I can scale up if necessary.
I'm not experienced in backend / linux server kinda things at all, besides the simple Docker setup I have for development. So any and all advice is welcome, let me know if you have any tips or gotchas about moving to a VPS Managed server.
-
11 April 2026 Investigating a login issue
There is an intermittent issue with the Sign In form : sometimes you can be redirected to the landing page, while still logged out. Checking the "Remember me" option before clicking Sign In solves this.
The fact that the redirect happens without showing an error message ("Incorrect username and/or password") means the authentication works, but the session somehow is lost after the redirect to the homepage.
I spent two hours already trying to figure out why this happens but I have no idea. If anyone has a clue, let me know. Issue 389 on Github (backend is Symfony 1.4 / php).
-
9 April 2026 Flashcard layout improvements
Some tweaks today to the flashcard layout, and fixes.
Japanese words in the prompt do not break. This one's a small improvement if you use Japanese text in the custom keywords (the flashcard prompt). In Japanese line breaks can occur between any two characters, but I thought it would be more readable to avoid wrapping in the middle of a Japanese word.

Fix #357 Long keywords wrapping. Only if you use a long keyword, it could happen sometimes that the keyword is overlapped by the Edit Flashcard button (top right of the card). This no longer happens.
Keyword overlapping kanji. In some instances a long keyword spanning 2-3 lines would overlap the kanji. Relatively uncommon, but this should no longer happen.
Example word text scaling. Minor thing, the text scales down a little bit if the Japanese compound is long, so the compound and reading fits on one line.
-
6 April 2026 Custom keywords support in the search box
The Study search box now matches your custom keywords.
Screenshot below shows two use cases: on the left a user translates the keywords in their language, on the right a user adds Japanese words to the keyword prompts.

If using Japanese in the keyword it may be a good idea to keep the english words so that you can easily search, otherwise you'll have to use Japanese input.
This closes issue 384 opened yesterday by joliss.
By Month
- May 2026 (1)
- Apr 2026 (6)
- Mar 2026 (4)
- Jan 2026 (4)
- Dec 2025 (1)
- Mar 2025 (1)
- Nov 2024 (1)
- Sep 2024 (1)
- Jun 2024 (2)
- May 2024 (4)
- Apr 2024 (3)
- Mar 2024 (1)
- Feb 2024 (1)
- Dec 2023 (1)
- Nov 2023 (2)
- Oct 2023 (2)
- Apr 2023 (2)
- Mar 2023 (2)
- Feb 2023 (1)
- Jan 2023 (2)
- Dec 2022 (1)
- Nov 2022 (2)
- Oct 2022 (3)
- Sep 2022 (1)
- May 2022 (4)
- Apr 2022 (1)
- Feb 2022 (2)
- Jan 2022 (2)
- Dec 2021 (4)
- Nov 2021 (2)
- Oct 2021 (2)
- Sep 2021 (2)
- Aug 2021 (1)
- Apr 2021 (2)
- Feb 2021 (3)
- Jan 2021 (3)
- Dec 2020 (1)
- Nov 2020 (1)
- May 2020 (1)
- Apr 2020 (1)
- Jan 2020 (1)
- Oct 2019 (1)
- Sep 2019 (1)
- Aug 2019 (4)
- Jul 2019 (3)
- Jun 2019 (1)
- May 2019 (1)
- Mar 2019 (2)
- Jan 2019 (1)
- Nov 2018 (3)
- Oct 2018 (8)
- Sep 2018 (4)
- Aug 2018 (3)
- Jul 2018 (1)
- Jun 2018 (4)
- May 2018 (1)
- Apr 2018 (1)
- Mar 2018 (1)
- Jan 2018 (1)
- Dec 2017 (6)
- Nov 2017 (4)
- Oct 2017 (4)
- Sep 2017 (5)
- Aug 2017 (5)
- Jun 2017 (3)
- May 2017 (2)
- Apr 2017 (3)
- Mar 2017 (7)
- Feb 2017 (10)
- Jan 2017 (11)
- Dec 2016 (6)
- Nov 2016 (5)
- Oct 2016 (6)
- Sep 2016 (7)
- Aug 2016 (3)
- May 2016 (1)
- Mar 2016 (2)
- Jan 2016 (1)
- Dec 2015 (3)
- Nov 2015 (1)
- Oct 2015 (1)
- Sep 2015 (7)
- Jul 2015 (2)
- Jun 2015 (1)
- May 2015 (5)
- Apr 2015 (4)
- Mar 2015 (5)
- Feb 2015 (4)
- Jan 2015 (5)
- Dec 2014 (4)
- Nov 2014 (3)
- Oct 2014 (2)
- Jun 2014 (1)
- Apr 2014 (2)
- Mar 2014 (4)
- Feb 2014 (3)
- Jan 2014 (4)
- Dec 2013 (2)
- Oct 2013 (1)
- Sep 2013 (1)
- Jun 2013 (4)
- May 2013 (1)
- Mar 2013 (1)
- Jan 2013 (2)
- Oct 2012 (2)
- Aug 2012 (1)
- Jul 2012 (2)
- Jun 2012 (2)
- May 2012 (1)
- Mar 2012 (2)
- May 2011 (1)
- Apr 2011 (4)
- Mar 2011 (3)
- Feb 2011 (2)
- Jan 2011 (2)
- Dec 2010 (8)
- Nov 2010 (8)
- Oct 2010 (3)
- Sep 2010 (3)
- Aug 2010 (1)
- Jul 2010 (2)
- Jun 2010 (5)
- May 2010 (1)
- Apr 2010 (3)
- Mar 2010 (4)
- Feb 2010 (2)
- Jan 2010 (1)
- Dec 2009 (5)
- Nov 2009 (5)
- Oct 2009 (1)
- Aug 2009 (1)
- May 2009 (5)
- Apr 2009 (2)
- Mar 2009 (1)
- Feb 2009 (2)
- Jan 2009 (2)
- Nov 2008 (1)
- Oct 2008 (1)
- Sep 2008 (1)
- May 2008 (2)
- Apr 2008 (1)
- Feb 2008 (6)
- Jan 2008 (5)
- Dec 2007 (6)
- Oct 2007 (1)
- Sep 2007 (2)
- Aug 2007 (3)
- Jun 2007 (1)
- May 2007 (5)
- Apr 2007 (1)
- Mar 2007 (2)
- Feb 2007 (1)
- Jan 2007 (4)
- Dec 2006 (3)
- Aug 2006 (1)
- Jun 2006 (3)
- Apr 2006 (6)
- Mar 2006 (8)
- Feb 2006 (1)
- Jan 2006 (4)
- Nov 2005 (1)
- Oct 2005 (4)
- Sep 2005 (1)
- Aug 2005 (11)
