# Static Publishing Platform created at: 2023-02-09. if you are reading this file years later, it is very probably obsolete. based on: - Gitea: https://github.com/superboum/gitea - Teabag: https://github.com/denyskon/teabag - Static CMS: https://www.staticcms.org/ - Drone: https://github.com/harness/drone - Garage: git.deuxfleurs.fr/Deuxfleurs/garage/ ## Install Gitea The recommended docker-compose is a good start for this toy example: https://docs.gitea.io/en-us/install-with-docker/ You need to configure CORS: ```ini [cors] ENABLED=true ALLOW_DOMAIN=* ALLOW_CREDENTIALS=true SCHEME=* HEADERS=Content-Type,User-Agent,Authorization ``` The last entry is required but ignored in Gitea version < 1.19, you must instead use a patched image to allow the custom header `Content-Type`. For example, I am using this one: `superboum/gitea:1.17.4-cors`. Now you are ready to start your gitea instance: ``` docker-compose up -d ``` Now go to `http://localhost:3000` and configure your Gitea instance. Create an administrator account by unfolding the last section. ## Install Teabag The first step is to create some tokens for Teabag in Gitea. Go to this page: http://localhost:3000/user/settings/applications And create an Oauth2 application with the following parameters: - name: `Teabag` - callback: `http://localhost:3001/callback` Now, use the example env file from the official repo as a template. Mine look like that: ```ini HOST=0.0.0.0 PORT=3001 SESSION_SECRET=JdNF... GITEA_KEY=968c9... GITEA_SECRET=gto_65p GITEA_BASE_URL=http://localhost:3000 GITEA_AUTH_URI=login/oauth/authorize GITEA_TOKEN_URI=login/oauth/access_token GITEA_USER_URI=api/v1/user CALLBACK_URI=http://localhost:3001/callback ``` This file is fetched from `./env/teabag.env` or `/etc/teabag/teabag.env`, so pick one of this path. Check that teabag is running: ``` $ curl -I http://localhost:3001 HTTP/1.1 200 OK Date: Thu, 09 Feb 2023 13:32:15 GMT Content-Length: 73 Content-Type: text/html; charset=utf-8 ``` ## Create a blog with Jekyll I don't really like CDNs so we will locally download the javasript file once and for all. For this example, we will create a basic jekyll blog. ``` nix-shell -p bundler bundler install jekyll bundle exec jekyll new my-blog cd my-blog bundle install bundle exec jekyll serve ``` Now you website should be available at: `http://localhost:4000`. You must now create a repository for your website on our target gitea instance. Mine is `quentin/my-blog`. Use the gitea UI and then: ``` git init git add . git commit git remote add origin http://localhost:3000/quentin/my-blog.git git push -u origin main ``` ## Add "Static CMS" to your blog In your blog folder (`my-blog`), create a file at this path `admin/index.html` with this content: ```html