gopherden: Forum via Gopher Protocol _ _ _ __ _ ___ _ __ | |_ ___ _ _ __| | ___ _ _ (_) / _` | / _ \ | '_ \ | ' \ / -_) | '_| / _` | / -_) | ' \ _ \__, | \___/ | .__/ |_||_| \___| |_| \__,_| \___| |_||_| (_) |___/ |_| ___ | __| ___ _ _ _ _ _ __ | _| / _ \ | '_| | || | | ' \ |_| \___/ |_| \_,_| |_|_|_| _ __ __ (_) __ _ \ V / | | / _` | \_/ |_| \__,_| ___ _ / __| ___ _ __ | |_ ___ _ _ | (_ | / _ \ | '_ \ | ' \ / -_) | '_| \___| \___/ | .__/ |_||_| \___| |_| |_| ___ _ _ | _ \ _ _ ___ | |_ ___ __ ___ | | | _/ | '_| / _ \ | _| / _ \ / _| / _ \ | | |_| |_| \___/ \__| \___/ \__| \___/ |_| ╔─*──*──*──*──*──*──*──*──*──*──*──*──*──*──*──*─╗ ║1 ........................................ 1║ ║2* ........................................ *2║ ║3 ........................................ 3║ ║1 ...........Posted: 2024-03-10........... 1║ ║2* ...Tags: gopher haskell nix showcase ... *2║ ║3 ........................................ 3║ ║1 ........................................ 1║ ╚────────────────────────────────────────────────╝ gopherden[1] is forum software for the Gopher Protocol[2]. View the official gopherden server via the web[3] or via the Gopher Protocol (as intended)[4] (you may want to read my post about the Gopher Protocol[5]). I'm thinking about renaming it to "phorum." * TOC {:toc} # Features (Users/Visitors) Features for the people who use a gopherden: * Transient content. Old threads are deleted. There's max thread count, when reached and a new post is made, the oldest one gets erased. * Anonymous, except IPs are associated with posts for banning and legal purposes * View threads as gopher maps or as text files (ASCII art, kind of) * Prevents some accidental reposting by refreshing * Prevents new threads being created where the message/content is the same as another in the DB * "Secret codes" which allow you to use codes like `` to potentially show an ASCII art picture * Rate-limiting (how fast you can make new threads or posts) * Handles/parses Gopher and HTTP(S) URIs into menu/map items # News [news from my blog about gopherden] # Known issues * No real bot prevention. A captcha-like system could be implemented. # Feedback * Contact me using a method mentioned on my about page[6] * Create an issue on the gopherden GitHub repo[7] # Who's using, in the news Some other instances, notable users... # Documentation and tutorials * The project's README.md[8] # See also * This site's gopher tag[9] * My post about the Gopher Protocol[10] * gopherden GitHub repo[11] # Post on the official server! This feels kind of redundant. Official *gopherden* server at gopher://gopher.someodd.zip:7070[12]. You may want to read my article on the Gopher Protocol[13] for help on browsing gopherspace. You can use my Gopher Protocol client, "waffle"[14] to visit the forum! You can use `gopher` (`sudo apt-get install gopher`) and then use `gopher -p "/" gopher.someodd.zip 7070`. You could also use Lagrange[15], which has a client for Linux, MacOS, Windows, Android, and iOS. Below is a photo of me using Lagrange to visit the forum on my phone: !Langrange client on a phone, visiting a gopherden forum => /assets/showcase/gopherden/lagrange-gopherden-phone.png. # Want your own gopherden or want to develop? gopherden is open source[16]. ## Developer and Server Features Features for those who host or develop (a) gopherden: * Written in Haskell * TOML configuration spec. First time I implemented a TOML config and I find it decent. * Uses Spacecookie[17], a wonderful Gopher Protocol library. I've worked with the author before. * CLI for banning I'm leveraging `nixpkgs` to: * Make it very easy on me to build and deploy, particularly on my server * Have a development environment that sets up/takes down postgresql for me, which also helps with deploying a little demo server I'm hosting now. It also wipes the database on exit, too. ## Setting up a server As of the time I'm writing this I don't have a `systemd` integration or Debian package, so a set up I like and think is simple/easy: 1. clone the repo and `cd` into it 1. make sure `nixpkgs` is installed on your system with `experimental-features = flakes nix-command` in your `~/.config/nix/nix.conf` 1. start a GNU Screen session `screen -S services` 1. `nix develop` 1. `nix run .#gopherden -- launch` There you go! Keep in mind if you send the exit signal (I think) inside of `nix develop` the database gets wiped. ## Footnotes [1]: gopherden: https://github.com/someodd/gopherden/ [2]: Gopher Protocol: /tags/gopher [3]: via the web: https://gopher.floodgap.com/gopher/gw?a=gopher%3A%2F%2Fgopher.someodd.zip%3A7070%2F [4]: via the Gopher Protocol (as intended): gopher://gopher.someodd.zip:7070/ [5]: my post about the Gopher Protocol: /notes/gopher [6]: my about page: /about [7]: Create an issue on the gopherden GitHub repo: https://github.com/someodd/gopherden/issues [8]: The project's README.md: https://github.com/someodd/gopherden/blob/master/README.md [9]: This site's gopher tag: /tags/gopher [10]: My post about the Gopher Protocol: /notes/gopher [11]: gopherden GitHub repo: https://github.com/someodd/gopherden [12]: gopher://gopher.someodd.zip:7070: gopher://gopher.someodd.zip:7070 [13]: my article on the Gopher Protocol: /notes/gopher [14]: my Gopher Protocol client, "waffle": /showcase/waffle [15]: Lagrange: https://gmi.skyjake.fi/lagrange/ [16]: gopherden is open source: https://github.com/someodd/gopherden [17]: Spacecookie: https://github.com/sternenseemann/spacecookie