blog-le01

pull/3/head
Tim 2020-12-28 00:11:51 +01:00
commit 23c0834db5
9 changed files with 361 additions and 0 deletions

80
Makefile Normal file
View File

@ -0,0 +1,80 @@
PY?=python3
PELICAN?=pelican
PELICANOPTS=
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
GITHUB_PAGES_BRANCH=gh-pages
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
SERVER ?= "0.0.0.0"
PORT ?= 0
ifneq ($(PORT), 0)
PELICANOPTS += -p $(PORT)
endif
help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@echo 'Usage: '
@echo ' make html (re)generate the web site '
@echo ' make clean remove the generated files '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] serve and regenerate together '
@echo ' make ssh_upload upload the web site via SSH '
@echo ' make rsync_upload upload the web site via rsync+ssh '
@echo ' make github upload the web site via gh-pages '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '
html:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
clean:
[ ! -d "$(OUTPUTDIR)" ] || rm -rf "$(OUTPUTDIR)"
regenerate:
"$(PELICAN)" -r "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve:
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve-global:
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER)
devserver:
"$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
devserver-global:
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -b 0.0.0.0
publish:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS)
github: publish
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) "$(OUTPUTDIR)"
git push origin $(GITHUB_PAGES_BRANCH)
.PHONY: html help clean regenerate serve serve-global devserver publish github

Binary file not shown.

View File

@ -0,0 +1,27 @@
Title: Finanzierung LEdiver.se
Date: 2020-02-28 10:20
Modified: 2020-12-26 19:30
Category: post
Tags: librepay, leipzig, lediverse, fediverse, blog
Slug: finanzierung-lediverse
Authors: Team
Summary: Finanzierung Blog Post Lediver.se
In diesem Post möchten wir transparent machen, wie sich der Betrieb von lediver.se aktuell finanziert.
<br><br>
Wir haben zwei virtuelle Server angemietet. Auf dem Hauptserver betreiben wir die Mastodon-Instanz,
der andere wesentlich schwächere Server stellt diesen Blog zur Verfügung und soll in Zukunft
fürs Monitoring eingesetzt werden. Die monatlichen Kosten für beide Server belaufen sich auf 5,99 €.
Dazu kommen die Kosten für die Domain lediver.se, die sich monatlich auf 1,51 € belaufen.
Weiterhin haben wir für 3,45 € im Monat Backup-Storage angemietet.
Insgesamt kostet der Betrieb also 10,95 € im Monat.
<br><br>
Die aktuelle technische Ausstattung ist noch sehr gering ausgelastet.
In der Nahen Zukunft sollten also keine weiteren Kosten hinzu kommen.
Dieser Betrag ist für uns glücklicherweise kein Problem,
womit die Finanzierung des Servers zumindest für das Jahr 2020 abgesichert sein sollte.
<br><br>
Für den Fall, dass ihr euch dennoch an der Finanzierung beteiligen wollt, haben wir ein Liberapay-Team angelegt:
<a href="https://liberapay.com/LEdiver.se/">https://liberapay.com/LEdiver.se/</a><br><br>
Wenn ihr uns über einen anderen Weg eine Spende zukommen lassen möchtest, kontaktiert uns einfach.
<br><br>

View File

@ -0,0 +1,11 @@
Title: LEdiver.se Hello Leipzig <3
Date: 2020-02-20 10:20
Modified: 2020-12-26 19:30
Category: post
Tags: new, post, leipzig
Slug: hello-world
Authors: Team
Summary: First Blog Post Lediver.se
Das ist der erste Beitrag auf dem offiziellen Blog vom LEdiver.se<br>
Hier könnt ihr euch über Neuerungen und Aktuelle Informationen über die Mastodon Instanz lediver.se holen.

View File

@ -0,0 +1,55 @@
Title: Wir haben ein Logo, Einladungslink und was es noch Neues gibt
Date: 2020-10-06 10:20
Modified: 2020-12-26 19:30
Category: post
Tags: Einladungslink, Logo, Update, fediverse, blog, lediver.se
Slug: update-infos-lediverse
Authors: Team
Summary: Wir bringen euch auf den neusten Stand
Hallo Leute,
Es sind jetzt einige Monate mit einer verrückten Zeit vergangen und wir melden uns seit dem Februar mal wieder mit ein paar Informationen.
Es haben sich ein paar Dinge in der Zwischenzeit getan.
Bis Jetzt war es nicht möglich, auf LEdiver.se ohne Administrationsrechte oder Moderationsrechte einen neuen Account anzulegen. Das hat sich nun geändert.
Wir wollen auch weiterhin das unsere Instanz in einem gewissen Rahmen bleibt.
Die Instanz soll für Leute aus Leipzig, Umgebung und Freunde/Bekannte von euch sein.
Daher haben wir uns dafür entschieden, das die Leute, die schon einen Account haben einen Link generieren können um weitere Personen auf die Instanz LEdiver.se einzuladen.
Außerdem hat LEdiver.se nun ein Logo, welches wir euch mit stolz präsentieren können:
[Logo Lediverse]
Vielen Dank @felicie@lediver.se, für deine tolle Arbeit.
Wir haben natürlich noch mehr organisiert im Hintergrund.
Unsere Nutzungsbedingungen sind nun unter:
https://lediver.se/terms
zu erreichen. Dort könnt ihr euch über Rechte,
Pflichten und die Regeln zur Nutzung der Instanz informieren.
Ebenfalls findet ihr dort auch unsere Datenschutzerklärung.
Wir denken, dass die Wenigsten, gern solche langen Datenschutzerklärungen oder AGB's lesen,
daher haben wir diesen Inhalt so lang wie nötig, aber so kurz wie möglich gehalten.
#### Einladungslink generieren
Hier noch ein Tutorial, wie ihr einen Einladungslink genierieren könnt, um eure Freunde, Bekannte usw. ins LEdiver.se einzuladen.
So sollte nun die Ansicht vor euch aussehen:
[Bild Tutorial 1]
Jetzt klickt ihr wie auf dem unteren Bild makiert in der linken unteren Ecke auf “Leute einladen”
[Bild Tutorial 2]
Auf der nächsten Seite könnt ihr noch einige Einstellungen Tätigen:
* “Maximale Verwendungen” mit diesem Wert könnt ihr Angeben wie oft euer Einladungslink verwendet werden darf.
* “Läuft ab” damit könnt ihr die Haltbarkeit des Links definieren. Wenn diese Zeit rum ist funktioniert dieser nicht mehr und es muss gegebenenfalls ein neuer Link generiert werden
* Und du kannst noch ein Häckchen in die Checkbox darunter setzen wenn du möchtest das der neue eingelandene Nutzer dir automatisch folgt.
Wenn du die Einstellungen vorgenommen hast, musst du nur noch auf “generieren” klicken.
[Bild Tutorial 3]
Im Anschluss wird ein ein Link angezeigt, diesen kannst du dann einfach kopieren und an deine gewünschten Personen weiterleiten. Nun viel Spaß beim fleißigen einladen.

35
pelicanconf.py Normal file
View File

@ -0,0 +1,35 @@
#!/usr/bin/env python
-*- coding: utf-8 -*- #
AUTHOR = 'Team'
SITENAME = 'blog.lediver.se'
SITEURL = ''
PATH = 'content'
THEME = '/home/jellybrain/coding/pelicanthemes/bootlex'
TIMEZONE = 'Europe/Berlin'
DEFAULT_LANG = 'de'
LOCALE = ('de_DE', 'en_EN')
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
# Blogroll
LINKS = (('Pelican', 'https://getpelican.com/'),
('Python.org', 'https://www.python.org/'),
('Jinja2', 'https://palletsprojects.com/p/jinja/'),
('You can modify those links in your config file', '#'),)
# Social widget
SOCIAL = (('You can add links in your config file', '#'),
('Another social link', '#'),)
DEFAULT_PAGINATION = 5
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True

1
pelicanthemes/bootlex Submodule

@ -0,0 +1 @@
Subproject commit c08c2503b3e30ff9b787c26955b9625b55f111f7

24
publishconf.py Normal file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = 'https://blog.lediver.se'
RELATIVE_URLS = False
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
DELETE_OUTPUT_DIRECTORY = True
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""

128
tasks.py Normal file
View File

@ -0,0 +1,128 @@
# -*- coding: utf-8 -*-
import os
import shlex
import shutil
import sys
import datetime
from invoke import task
from invoke.main import program
from invoke.util import cd
from pelican import main as pelican_main
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
SETTINGS_FILE_BASE = 'pelicanconf.py'
SETTINGS = {}
SETTINGS.update(DEFAULT_CONFIG)
LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE)
SETTINGS.update(LOCAL_SETTINGS)
CONFIG = {
'settings_base': SETTINGS_FILE_BASE,
'settings_publish': 'publishconf.py',
# Output path. Can be absolute or relative to tasks.py. Default: 'output'
'deploy_path': SETTINGS['OUTPUT_PATH'],
# Github Pages configuration
'github_pages_branch': 'gh-pages',
'commit_message': "'Publish site on {}'".format(datetime.date.today().isoformat()),
# Host and port for `serve`
'host': 'localhost',
'port': 8000,
}
@task
def clean(c):
"""Remove generated files"""
if os.path.isdir(CONFIG['deploy_path']):
shutil.rmtree(CONFIG['deploy_path'])
os.makedirs(CONFIG['deploy_path'])
@task
def build(c):
"""Build local version of site"""
pelican_run('-s {settings_base}'.format(**CONFIG))
@task
def rebuild(c):
"""`build` with the delete switch"""
pelican_run('-d -s {settings_base}'.format(**CONFIG))
@task
def regenerate(c):
"""Automatically regenerate site upon file modification"""
pelican_run('-r -s {settings_base}'.format(**CONFIG))
@task
def serve(c):
"""Serve site at http://$HOST:$PORT/ (default is localhost:8000)"""
class AddressReuseTCPServer(RootedHTTPServer):
allow_reuse_address = True
server = AddressReuseTCPServer(
CONFIG['deploy_path'],
(CONFIG['host'], CONFIG['port']),
ComplexHTTPRequestHandler)
sys.stderr.write('Serving at {host}:{port} ...\n'.format(**CONFIG))
server.serve_forever()
@task
def reserve(c):
"""`build`, then `serve`"""
build(c)
serve(c)
@task
def preview(c):
"""Build production version of site"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
@task
def livereload(c):
"""Automatically reload browser tab upon file modification."""
from livereload import Server
build(c)
server = Server()
# Watch the base settings file
server.watch(CONFIG['settings_base'], lambda: build(c))
# Watch content source files
content_file_extensions = ['.md', '.rst']
for extension in content_file_extensions:
content_blob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
server.watch(content_blob, lambda: build(c))
# Watch the theme's templates and static assets
theme_path = SETTINGS['THEME']
server.watch('{}/templates/*.html'.format(theme_path), lambda: build(c))
static_file_extensions = ['.css', '.js']
for extension in static_file_extensions:
static_file = '{0}/static/**/*{1}'.format(theme_path, extension)
server.watch(static_file, lambda: build(c))
# Serve output path on configured host and port
server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path'])
@task
def publish(c):
"""Publish to production via rsync"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
c.run(
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
'-e "ssh -p {ssh_port}" '
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
CONFIG['deploy_path'].rstrip('/') + '/',
**CONFIG))
@task
def gh_pages(c):
"""Publish to GitHub Pages"""
preview(c)
c.run('ghp-import -b {github_pages_branch} '
'-m {commit_message} '
'{deploy_path} -p'.format(**CONFIG))
def pelican_run(cmd):
cmd += ' ' + program.core.remainder # allows to pass-through args to pelican
pelican_main(shlex.split(cmd))