aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2021-03-28-gemini-capsule.org
diff options
context:
space:
mode:
Diffstat (limited to 'content/blog/2021-03-28-gemini-capsule.org')
-rw-r--r--content/blog/2021-03-28-gemini-capsule.org178
1 files changed, 178 insertions, 0 deletions
diff --git a/content/blog/2021-03-28-gemini-capsule.org b/content/blog/2021-03-28-gemini-capsule.org
new file mode 100644
index 0000000..7f2c6ef
--- /dev/null
+++ b/content/blog/2021-03-28-gemini-capsule.org
@@ -0,0 +1,178 @@
+#+date: <2021-03-28>
+#+title: Launching a Gemini Capsule
+#+description:
+
+
+* What is Gemini?
+
+[[https://gemini.circumlunar.space/][Gemini]] is an internet protocol
+introduced in June 2019 as an alternative to HTTP(S) or Gopher. In
+layman's terms, it's an alternative way to browse sites (called
+capsules) that requires a special browser. Since Gemini is not
+standardized as an internet standard, normal web browsers won't be able
+to load a Gemini capsule. Instead, you'll need to use
+[[https://gemini.circumlunar.space/clients.html][a Gemini-specific
+browser]].
+
+The content found within a Gemini page is called
+[[https://gemini.circumlunar.space/docs/cheatsheet.gmi][Gemtext]] and is
+/extremely/ basic (on purpose). Gemini only processes the text, no media
+content like images. However, you're able to style 3 levels of headings,
+regular text, links (which will display on their own line), quotes, and
+an unordered list.
+
+Here's a complete listing of valid Gemtext:
+
+#+begin_src txt
+# Heading 1
+## Heading 2
+### Heading 3
+
+Regular text! Lorem ipsum dolor sit amet.
+
+=> https://example.com My Website
+=> gemini://example.com My Gemini Capsule
+
+> "If life were predictable it would cease to be life, and be without flavor." - Eleanor Roosevelt
+
+My List:
+,** Item
+,** Item
+
+```Anything between three backticks will be rendered as code.```
+#+end_src
+
+*** Free Option
+
+There are probably numerous websites that allow you to create your
+personal Gemini capsule, but I'm going to focus on the two sites that I
+have personally tested. The first option below, Midnight Pub, allows you
+to create/edit any Gemini files you want in your account. This is
+essentially a GUI option with a built-in text box for editing. The
+second option below, Sourcehut, allows you to use a Git repository and
+automatic build process to deploy your personal Gemini capsule every
+time you push a commit.
+
+** Midnight Pub - Beginner Friendly
+
+[[https://midnight.pub/][Midnight Pub]] is a small, virtual community
+meant to reflect the atmosphere of wandering into a small alley pub. The
+site is built in Gemtext and has a server-side process to convert
+Gemtext to HTML if someone loads the site in an HTTP(S) browser.
+
+To create an account, you'll need to email the owner of the website to
+obtain a key. You can find their email on the Midnight Pub homepage.
+Once registered, head to [[https://midnight.pub/account][your account]]
+and select [[https://midnight.pub/site][manage site]]. This is the
+screen where you can upload or create any files to be displayed on the
+internet.
+
+For example, I've created both an HTML file and a Gemini file. Remember
+that Gemini is automatically converted to HTML on the Pub, so you don't
+need an HTML version. For example, I created an HTML version to add in
+some extra styling.
+
+All you need to do is create a page like =index.gmi= and use your Gemini
+browser to head over to your-username.midnight.pub to see the result.
+
+That's all there is to it! Easy enough, right? Let's check out a more
+advanced version in the next section.
+
+* Paid Option
+
+As of 2021, Sourcehut has decided to require users to have a paid
+account in order to utilize their automated build system. For now, paid
+accounts can be as low as $2/month.
+
+** Sourcehut
+
+[[https://sourcehut.org/][Sourcehut]] is a collection of software
+development tools, but mostly surrounds their hosted Git repository
+service. Simply put, it's a minimal and more private alternative to
+services like GitHub.
+
+This walkthrough is more advanced and involves things like Git, SSH, the
+command line. If you don't think you know enough to do this, check out
+my walkthrough on creating a Gemini capsule for the Midnight Pub
+instead.
+
+The first thing you'll need to do is create an SSH key pair, if you
+don't already have one on your system. Once created, grab the contents
+of =id_rsa.pub= and add it to your Sourcehut account settings - this
+will allow you to push and pull code changes without using a
+username/password.
+
+#+begin_src sh
+ssh keygen
+#+end_src
+
+Next up, let's create a repository with the proper name so that the
+Sourcehut build system will know we want them to host a website for us.
+Use the following format exactly:
+
+#+begin_src sh
+mkdir your-username.srht.site && cd your-username.srht.site
+#+end_src
+
+Now that we've created the repo, let's initialize Git and add the proper
+remote URL.
+
+#+begin_src sh
+git init
+#+end_src
+
+#+begin_src sh
+git remote add origin git@git.sr.ht:~your-username/your-username.srht.site
+#+end_src
+
+Now that our repository is set up and configured, we will need to create
+at least two files:
+
+- =index.gmi=
+- =.build.yml=
+
+For your =.build.yml= file, use the following content and be sure to
+update the =site= line with your username!
+
+#+begin_src yaml
+image: alpine/latest
+oauth: pages.sr.ht/PAGES:RW
+environment:
+ site: your-username.srht.site
+tasks:
+ - package: |
+ cd $site
+ tar -cvz . > ../site.tar.gz
+ - upload: |
+ acurl -f https://pages.sr.ht/publish/$site -Fcontent=@site.tar.gz -Fprotocol=GEMINI
+#+end_src
+
+For the =index.gmi= file, put whatever you want in there and save it.
+You could even just copy and paste the Gemtext cheatsheet.
+
+If you want to serve both HTML and Gemini files from this repository,
+just add a second command to the =upload= section:
+
+#+begin_src yaml
+- upload: |
+ acurl -f https://pages.sr.ht/publish/$site -Fcontent=@site.tar.gz -Fprotocol=GEMINI
+ acurl -f https://pages.sr.ht/publish/$site -Fcontent=@site.tar.gz
+#+end_src
+
+Lastly, commit your changes and push them to the remote repo.
+
+#+begin_src sh
+git add .; git commit -m "initial commit"; git push --set-upstream origin HEAD
+#+end_src
+
+If you've successfully created the files with the proper format, you'll
+see the terminal print a message that lets you know where the automatic
+build is taking place. For example, here's what the terminal tells me:
+
+#+begin_src sh
+remote: Build started:
+remote: https://builds.sr.ht/~user/job/689803 [.build.yml]
+#+end_src
+
+Now that you've properly built your Sourcehut page, you can browse to
+your-username.srht.site in a Gemini browser and view the final results.