Phoebe Wiki
Phoebe does two and a half things:
It's a program that you run on a computer and other people connect to it using their Gemini client in order to read the pages on it.
It's a wiki, which means that people can edit the pages without needing an account. All they need is a client that speaks both Gemini and Titan, and the password. The default password is "hello". 😃
Optionally, people can also access it using a regular web browser.
Gemini itself is very simple network protocol, like Gopher or Finger, but with TLS. Gemtext is a very simple markup language, a bit like Markdown, but line oriented. See "GEMTEXT".
To take a look for yourself, check out the test wiki via the web or via the web.
Reading the wiki
This repository comes with a Perl script called gemini to download Gemini URLs.
Other clients can be found here:
See App::Phoebe::Web to enable reading via the web.
Gemtext
Pages are written in gemtext, a lightweight hypertext format. You can use your favourite text editor to write them.
A text line is a paragraph of text.
This is a paragraph.
This is another paragraph.
A link line starts with "=>", a space, a URL, optionally followed by whitespace and some text; the URL can be absolute or relative.
=> http://transjovian.org/ The Transjovian Council on the web
=> Welcome Welcome to The Transjovian Council
A line starting with "```" toggles preformatting on and off.
Here is an example:
```
The tapping calms me:
Constant mindless murmuring
Rain drops against glass
```
A line starting with "#", "##", or "###", followed by a space and some text is a heading.
## License
The GNU Affero General Public License.
A line starting with "*", followed by a space and some text is a list item.
* one item
* another item
A line starting with ">", followed by a space and some text is a quote.
The monologue at the end is fantastic, with the city lights and the rain.
> I have seen things you people would not believe.
Editing the wiki
How do you edit a Phoebe wiki? You need to use a Titan-enabled client.
Titan is a companion protocol to Gemini: it allows clients to upload files to Gemini sites, if servers allow this. On Phoebe, you can edit "raw" pages. That is, at the bottom of a page you'll see a link to the "raw" page. If you follow it, you'll see the page content as plain text. You can submit a changed version of this text to the same URL using Titan.
Known clients:
This repository comes with a Perl script called titan to upload files.
Gemini Write is an extension for the Emacs Gopher and Gemini client Elpher.
Gemini & Titan for Bash are two shell functions that allow you to download and upload files.
Lagrange is a GUI client that is Titan enabled.
See App::Phoebe::WebEdit to enable editing via the web.
Installation
Using cpan
:
cpan App::Phoebe
Manual install:
perl Makefile.PL
make
make install
Dependencies
If you are not using cpan
or cpanm
to install Phoebe, you'll need to install
the following dependencies:
- Algorithm::Diff, or
libalgorithm-diff-xs-perl
- File::ReadBackwards, or
libfile-readbackwards-perl
- File::Slurper, or
libfile-slurper-perl
- Mojolicious, or
libmojolicious-perl
- IO::Socket::SSL, or
libio-socket-ssl-perl
- Modern::Perl, or
libmodern-perl-perl
- URI::Escape, or
liburi-escape-xs-perl
- Net::IDN::Encode, or
libnet-idn-encode-perl
- Encode::Locale, or
libencode-locale-perl
I'm going to be using curl
and openssl
in the Quickstart section of
phoebe
, so you'll need those tools as well. And finally, when people download
their data, the code calls tar
(available from packages with the same name on
Debian derived systems).
Installing Perl
If you are on GNU/Linx or macOS, I recommend installing from Perlbrew. Each Perl installation comes with its own library directories, so if you switch Perl version, you need to reinstall Phoebe for that Perl version.
See also
phoebe - a Gemini-first wiki server
gemini - a command line client for the Gemini protocol
gemini-chat - a command line client for the Gemini protocol to send lines you type
ijirait - a command line client for the Gemini protocol to play the Ijirait MUSH
phoebe-ctl - admin control for a Phoebe wiki
spartan - a command line client for the Spartan protocol
titan - a command line client to upload texts and files using the Titan protocol
App::Phoebe - a Gemini-based wiki
App::Phoebe::BlockFediverse - block Fediverse instances from Phoebe wiki
App::Phoebe::Capsules - provide every visitor with a writeable capsule
App::Phoebe::Chat - add a Gemini-based chat room for every Phoebe wiki space
App::Phoebe::Comments - add comment pages to Phoebe wiki
App::Phoebe::Css - use a CSS file for Phoebe wiki served on the web
App::Phoebe::DebugIpNumbers - log visitor IP numbers for Phoebe
App::Phoebe::Favicon - serve a favicon via the web for Phoebe
App::Phoebe::Galleries - serving sitelen mute image galleries via Gemini
App::Phoebe::Gopher - serving a Phoebe wiki via the Gopher protocol
App::Phoebe::HeapDump - debugging Phoebe memory leaks
App::Phoebe::Iapetus - uploads using the Iapetus protocol
App::Phoebe::Ijirait - a Gemini-based MUSH running on Phoebe
App::Phoebe::MokuPona - serve files from moku pona
App::Phoebe::Oddmuse - act as a Gemini proxy for an Oddmuse wiki
App::Phoebe::Oracle - an anonymous question asking game
App::Phoebe::PageHeadings - use headings instead of file names
App::Phoebe::RegisteredEditorsOnly - only known users may edit Phoebe wiki pages
App::Phoebe::Spartan - implement the Spartan protocol for Phoebe
App::Phoebe::SpeedBump - defend Phoebe against bots and leeches
App::Phoebe::StaticFiles - serve static files via a Phoebe wiki
App::Phoebe::TokiPona - serve a linja pona via the web
App::Phoebe::Web - serve Phoebe wiki pages via the web
App::Phoebe::WebComments - allow comments on a Phoebe wiki via the web
App::Phoebe::WebDAV - add WebDAV to Phoebe wiki
App::Phoebe::WebEdit - allow edits of a Phoebe wiki via the web
App::Phoebe::WebStaticFiles - serve static files via the web
App::Phoebe::Wikipedia - act as Wikipedia proxy from Phoebe