.%*.                                                        .-.
               .%@@@+.                                                .--=%@@@-
               =@@@@@@-                                         :--+@@@@@@@@@*
               *@%@@@@@%:                               :--=#@@@@@@@@@@@@#@@+
               @@::%@@@@@@-:                   :::-=%@@@@@@@@@@@@@@%#*-  :@*
              .@@   =@@@@@@@@@+-:::::::-=*@@@@@@@@@@@@@@@@@@@%##-        @@:
              #@#     +%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*:              -@@
              #@-        *%@@@@@@@@@@@@@@@@@%%%#=                       %@=
              @@:             -=+++==     ..                            @@:
              @@        .               -@@@                           +@@
             #@%     =@@@@-            +@@@@#              *+          %@#
             #@-   -@@@@@@@.          +@@@@@%           .%@@@@=        @@:
             @@:  +@@@@@@@@@         +@+ +@@@         %@@@@@@@@@      -@@
             @@  *@%@*  :@@@        *@+  -@@@       %@@@@@@@@@@@#     @@@
            #@% %@ @%    %@@       *@*   .@@@     =@@@*@@   :@@@@     @@:
            %@:## *@+    :@@      :@@     @@@    %@@: @#     .@@@    .@@
            @@:.  @@:    .@@      @@      @@@   %@:  @@       @@%    @@%
            @@   -@@.    =@@     @@.      @@@  %@.  #@-       @@#    @@.
           %@%   +@@.    @@.    %@-       @@@ #@    @@.      :@@    -@@
           %@:   +@@+   .@%    #@=        @@@.@    *@@       +@+    @@*
           @@:   +@@%. .%%    *@+         @@@      %@@      -@#     @@
           @@    :@@@@@@%    :@@          @@%      %@@      @#     *@@
          %@@     #@@@@*     @@           @@%      %@@.    %@.     @@:
          @@:      ===:     @@.           @@%      %@@:  =@%.     .@@
          @@.              #@=            @@%      %@@%+%@#.      @@%
          @@              +@*             @@#      -@@@@@*       .@@
         %@@             :@@              @@#       %@@#:        =@@
         @@:            .@@               @@#        :           @@=
         @@.            @@.               @@#                   :@@
         @@            #@=                @@%                   %@%
        #@@           +@+                 #@%                  .@@
        @@:          =@#                  +@%                  =@%
        @@          :@%                   -@@                  @@+
        @@         .@@                    -@:                 -@@
       -@@         @%                     .:                  *@#
       @@*         #                                          @@.
       @@                                                    =@@
      .@@                                                    @@*
      .@@                                                   .@@
      *@@                                                   =@#
      @@*                                                   @@*
      @@                                                   -@@
     .@@                                                   +@*
     .@@                                                   @@-
     -@@                                                  =@@
     %@%                                                  #@*
     @@                                                   @@:
     @@                                                  +@@
    .@@                                                  %@+
    :@%                                                  @@.
    :@%                                                 *@%
    -@.                                                 %@=
    %@                                                  @@.
    @@                                                 *@%
    @@                                                 %@=
    @%                                                 @@:
   :@%                                                +@@
   :@*                =+-                             #@+
   :@:              .%@@@.                            @@-
   -@              =@@@@@#                           :@@
   =@             *@#.=@@%                           #@%
   *@            #@-  -@@%                           %@-
   @@           #@:   :@@%                           @@:
   @@          #%     .@@%               .#@@*      -@@
   @%         #%      .@@%              +@@@@@-     %@%
   @#        %@       :@@%            .@@@@@@@@     %@:
   @#       %@        :@@%           +@@% .@@@@     @@:
   @#      %@         :@@%          #@@:   :@@@    -@@
   @#     @@.         .@@@        .@@%     .@@@=   %@%
   @#    @@.          .@@@:      %@@-       @@@%   %@:
   @#   @@             @@@@    %@@@         *@@@   @@:
   @# .@@              @@@@@@@@@@=          :@@@   @@
   * @@@               :@@@@@@@@.           :@@@  *@@
.@@@@@%                 -@@@@@.             .@@@  @@=
@@@@@:                    ..                 @@@  @@.
-@%:                                         @@@  @@.
                                             @@@  @@
                                             -@@ =@@
                                             .@@ @@+
                                             .@@:@@.
                                              @@#@-
                                              @@@.
                                              +@-
                                               -
      
mediocregopher's lil web corner

Home  //  Posts  /  Follow  /  RSS  //  Source  /  License

Domiply: Your Friendly Neighborhood Gateway


EDIT(2023-12-30): this project was renamed to Domani following the publishing of this post. I have modified all links here accordingly, but left the text as-is.

There are a few big barriers to entry for anyone who wants to host their own website:

Alternative protocols like Gemini have most of these barriers still, with the possible exception of setting up HTTPS.

Even if a non-technical person was able to write up some hand-rolled HTML, or even use some WYSIWYG to create their site, they are still faced with further difficult challenges before they can have anything to show for their effort.

There are services such as Github Pages which take care of some portion of these barriers. Once you configure your DNS to point to Github, and tell Github which repo should serve a particular domain, Github will automatically serve your website (with correct HTTPS) from a git repo. The user's barriers to entry have been reduced to three: configuring DNS, figuring out how to use git (not a small barrier by any means), and setting up a Github account.

Github Pages is great, but we can do better.

Introducing: Domiply

This is a little project I've been working on in the past couple weeks which takes the idea of Github Pages and boils it down even further, completely eliminating the "create account with some service owned by Microsoft" step. To set up a website, one only needs to:

And that's it! Domiply will fetch the git repo, serve its contents on the provided domain name, and automatically set up HTTPS. It's stupid easy.

Trying it out

As an example, the following domain is being hosted via my domiply instance:

https://test.domani.micropelago.net

It is serving the static sub-directory of the git repo https://code.betamike.com/micropelago/domani.git. You can see how its configured by inputting test.domani.micropelago.net into the form on the main page and hitting Go!. You can even hit the Next button to see what the DNS configuration steps would be.

If you'd like to use my instance to set up your own domain, you can send me an email and I can give you the passphrase. Just let me know roughly what you plan to do with it, so I can keep track of who's doing what :) My domiply instance is going to be used by me for testing, and may get moved as time goes on, so please don't put anything you really care about on it.

Self Hosting

Domiply is intended to be easily self-hosted by anyone, for either just themselves or for their friends and family as well.

See the git repo for more on how to self-host

There's very little configuration needed, except to tell it where to store things.

Note that this project is still super alpha, and hasn't been tested well yet. But if you would like to contribute, testing it out and helping me sand down the sharp edges would be a great way to do so. Bug reports can be emailed to me directly.

Roadmap

Currently Domiply only supports using HTTPS to serve git repos, but I would like to expand its capabilities much further. Gemini support is an obvious must (hello to the geminauts reading this), but more backends are a must too. It's not like everyone can be expected to figure out how to use git.

To this end, support for integration with Google Drive, Dropbox, etc... would be huge. At that point anyone with a computer could easily hook their cloud accounts up to Domiply and serve a website directly from their computer (or so it would seem to them). Not very interesting for those of us who are totally decentra-pilled, but a huge win for actual humans.

If anyone has ideas for other backends which could be easily used by "normies" I'd love to hear about it. Any existing services or applications which expose a local directory to the public internet (even when the local machine is offline) would work.

For bonus points I'd like to integrate Domiply with IPFS/IPNS as well. Obviously this is pretty niche, but the design of IPFS/IPNS is such that it's also pretty future proof, and if anyone were to add a FUSE layer on top of it we'd be pretty feature complete.

Closing Thoughts

This was my first real rust project, and I learned a lot while working on it. I am slightly burnt out though, so it may be a bit before I get back on the horse. Nevertheless I am still very excited about its future, and am looking forward to any and all feedback.

Published 2023-05-23


This post is part of a series.
Previously: Why Fight The Oaks?
Next: Open Offer: I Will Host Your Domain


This site can also be accessed via the gemini protocol: gemini://mediocregopher.com/

What is gemini?