Site usability update #7

Merged
reese merged 20 commits from reese/cyberia-website:overhaul into main 2024-02-16 04:09:46 +00:00
58 changed files with 2435 additions and 2271 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
.vscode
build/
node_modules/

13
README
View file

@ -1,13 +0,0 @@
Website for Cyberia.
https://cyberia.club
to build the site, try ./make ;0
to install it on a webserver, do something like
-> mkdir -p /var/www/cyberia.club
-> git clone https://git.cyberia.club/services/website \
/var/www/cyberia.club
-> echo '* * * * * root /var/www/cyberia.club/cronjob' > \
/etc/cron.d/website-sync

20
README.md Normal file
View file

@ -0,0 +1,20 @@
Website for Cyberia.
https://cyberia.club
currently being rebuilt for accessibility and other reasons.
## to do:
- double check that crypto wallet addresses are correct!!
- fix contradictory style rules, notably in the donate widgets
- update & test cronjob
# setup
make sure to fetch dependencies first: `npm install`
## development
run `npm run develop`
## deployment
run `npm run build`. the generated site should be in `build/`

View file

@ -6,7 +6,8 @@ git pull --rebase >/dev/null
cur=$(git rev-list HEAD -n 1)
if [ "$prev" != "$cur" ]; then
git pull
./make
git pull
npm clean-install
npm run build
fi

View file

@ -1,132 +0,0 @@
a, a:hover, a:active, a:visited {
color: #b5bd68;
}
body {
color: #c5c8c6;
font: calc(0.40em + 1vmin) monospace;
text-align: center;
overflow-y: scroll;
background-color: #241e1e;
}
pre>pre {
text-align:left;
display:inline-block;
}
img {
max-width:57ch;
display:block;
height:auto;
width:100%;
}
@media(prefers-color-scheme:dark) {
body{
background:#000; color:#fff
}
a{
color:#6CF;
}
}
/* css from https://liberapay.com/cybertrez/widgets/button.js, see donate.txt */
html > body .liberapay-btn {
background-color: #f6c915;
border-radius: 4px;
color: #1a171b;
display: inline-block;
font-family: Helvetica Neue,Helvetica,sans-serif;
font-size: 14px;
font-weight: 700;
line-height: 22px;
padding: 5px 7px 3px;
position: relative;
text-decoration: none;
}
html > body .liberapay-btn:hover {
background-color: #fbce1a;
}
.liberapay-btn > svg {
position: absolute;
left: 7px;
top: 7px;
}
.liberapay-btn > span {
margin-left: 19px;
}
.btcpay-form { flex-direction: row; } .btcpay-form--block { flex-direction: column; }
.btcpay-form .submit {
margin-left: 15px;
padding: 4px 10px;
font-size: 17px;
font-weight: bold;
font: calc(0.40em + 1vmin) monospace;
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
background: transparent;
border-radius: 3px;
border:1px solid transparent;
color: #c5c8c6;
}
.btcpay-form--block select {
margin-bottom: 10px;
}
.btcpay-form .btcpay-custom-container{
display: inline-flex; align-items: center; justify-content: center; flex-direction: row;
}
.btcpay-custom {
display: flex;
align-items: center;
justify-content: center;
}
.btcpay-form select {
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
background: transparent;
border:1px solid transparent;
display: block;
border-radius: 3px;
border-left: 0;
padding: 1px;
margin-left: 2px;
margin-right: auto;
font-size: 19px;
cursor: pointer;
font: calc(0.40em + 1vmin) monospace;
color: #c5c8c6;
}
#btcpay-input-price { -moz-appearance: none; -webkit-appearance: none;
border: none;
box-shadow: none;
text-align: center;
font-size: 24px;
margin: auto;
border-radius: 3px;
padding: 4px;
background: transparent;
border:1px solid transparent;
font: calc(0.40em + 1vmin) monospace;
color: #c5c8c6;
}
.btcpay-form select,
#btcpay-input-price,
.btcpay-form .submit {
border-color: #c5c8c6;
}
#btcpay-input-price::-webkit-outer-spin-button, {
-webkit-appearance: none; margin: 0;
}

27
main.js Normal file
View file

@ -0,0 +1,27 @@
// pseudocode:
// 1. initialize build/
// 2. for *.md under site/
// - render the markdown
// - substitute it into template.html
// - save output to build/
// 3. copy static/* into build/
const { marked } = require('marked')
const { rimrafSync } = require('rimraf')
const fs = require('fs')
// Step 1
rimrafSync("build")
fs.mkdirSync("build")
// Step 2
let template = fs.readFileSync("template.html", "utf8")
fs.readdirSync("./site").filter(fn => fn.endsWith(".md")).forEach((filename) => {
let content = fs.readFileSync("site/"+filename, "utf8")
let rendered = template.replace("%%CONTENT%%", marked.parse(content))
let pagename = filename.replace(/\.md$/, "")
fs.writeFileSync("build/"+pagename+".html", rendered)
})
// Step 3
fs.cpSync("static", "build", { recursive:true })

82
make
View file

@ -1,82 +0,0 @@
#!/bin/sh -e
#
# Simple static site builder.
cat <<EOF > /tmp/meow
<!doctype html>
<html lang=en>
<link href='data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2Mt5V9jLebrYy3no2Mt5/9jLef/Yy3no2Mt5utjLeVcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoIwAwKCMAfSgjAIwoIwCMKCMAjCgjAIwoIwCMKCMAjCgjAIwoIwCMKCMAfSgjADAAAAAAAAAAAAAAAADYy3lX2Mt569jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3nr2Mt5VwAAAAAAAAAAKCMAfSgjAIwoIwCMKCMAjCgjAIwoIwCMKCMAjCgjAIwoIwCMKCMAjCgjAIwoIwCMKCMAjCgjAH0AAAAAy6yMQNjLeffYy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5V7d8qbrAkpz42Mp5/tjLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/8mnj8K3fKnot3yp/8mmj//Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9C3hf+4fqjot3yp/7d8qf+8iaH/2Mt5/9jLef/Yy3n/2Mt5/9jKev/Yy3n/2Mt5/9jLef/Yy3n/2Mt5/9TCf/+4f6f/t3yp/7d8qf+3fKn/t3yp/9bFff/Yy3n/2Mt5/8qpjv+4fqj/xJuW/9jLef/Yy3n/2Mt5/9jLef/Bk5v/t3yp/7d8qf+3fKnot3yp/7d8qf/Mr4r/2Mt5/9C5hP+3fKn/t3yp/7d8qf/SvIL/2Mt5/9jLef/Ru4P/t3yp/7d8qf+3fKnot3ypurd8qf+3fKn/u4Wk/8imkP+6hKT/t3yp/7d8qf+3fKn/vYug/9bGfP/Yy3n/wpaZ/7d8qf+3fKn/t3ypurd8qVe3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qf+7haT/wJCd/7d8qf+3fKn/t3yp/7d8qVcAAAAAt3yp47d8qf+3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qeMAAAAAAAAAALd8qVe3fKnrt3yp/7d8qf+3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qeu3fKlXAAAAAAAAAAAAAAAAt3ypV7d8qeO3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qf+3fKn/t3yp/7d8qeO3fKlXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3ypV7d8qbq3fKnot3yp/7d8qf+3fKnot3ypurd8qVcAAAAAAAAAAAAAAAAAAAAA8A8AAMADAACAAQAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAIABAADAAwAA8A8AAA==' rel=icon>
<title>Cyberia Computer Club</title>
<meta charset=utf-8>
<meta name=viewport content="width=device-width,initial-scale=1.0">
<meta name=Description content="Cyberia Computer Club">
<style>
%%CAPSUL_CSS%%
</style>
<pre>
<a href=/><b>Cyberia</b></a> <a href=/culture>Culture</a> <a href=https://blog.cyberia.club/read>Blog</a> <a href=/calendar>Calendar</a> <a href=/donate>Donate</a> <a href=/matrix>Matrix (Chat)</a> <a href=/mumble>Mumble</a>
<a href="https://capsul.org">Capsul -&gt;</a> &nbsp; <a href="https://nullhex.com">Nullhex -&gt;</a> &nbsp; <a href="https://git.cyberia.club">Git -&gt;</a> &nbsp; <a href="https://wiki.cyberia.club">Wiki -&gt;</a> &nbsp; <a href="https://stream.cyberia.club">Stream -&gt;</a>
<pre>
%%CONTENT%%
(c) Attribution-ShareAlike 4.0 International
Cyberia Computer Club 2020-∞
<a href="%%SOURCE%%">View page source</a>
</pre></pre>
EOF
rm -f build/*.txt build/*.html
mkdir -p build
cd build
# Iterate over each file in the source tree under /site/.
(cd ../si*; find . -type f -a -not -path ./templates/\*) |
while read -r page; do
mkdir -p "${page%/*}"
case $page in
*.txt)
sed -E "s|([^=][^\'\"])(https[:]//[^ )]*)|\1<a href='\2'>\2</a>|g" \
"../site/$page" |
# link https
sed -E "s|^(https[:]//[^ )]{32})([^ )]{3,1000})([^ )]{15})|<a href='\0'>\1...\3</a>|g" |
sed -E "s|^(https[:]//[^ )]{1,50})|<a href='\0'>\0</a>|g" |
# link mailto
sed -E "s|mailto:([^ ]*)|<a href='mailto:\1'>\1</a>|g" |
# color hexcodes
sed -E 's|(#[a-f0-9]{6})|<font color="\1">\1</font>|g' |
# color cyberia
sed -E 's@(Cyberia('"'"'s)?n?)([^A-Za-z0-9_/-])@<font color="#b294bb">\1</font>\3@g' |
sed -E 's|CYBERIA|<font color="#b294bb">CYBERIA</font>|g' |
sed '/%%CONTENT%%/r /dev/stdin' /tmp/meow |
sed '/%%CONTENT%%/d' |
sed "s|%%CAPSUL_CSS%%|$(cat ../cyberia.css | tr '\n' ' ')|g" |
sed "s %%SOURCE%% /${page##./} " \
> "${page%%.txt}.html"
ln -f "../site/$page" "$page"
printf '%s\n' "CC $page"
;;
# Copy over any images or non-txt files.
*)
cp "../site/$page" "$page"
printf '%s\n' "CP $page"
;;
esac
done

1736
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

26
package.json Normal file
View file

@ -0,0 +1,26 @@
{
"name": "website",
"version": "2.0.0",
"description": "Website for Cyberia.",
"main": "main.js",
"scripts": {
"build": "node main.js",
"develop": "concurrently \"npm run watch\" \"npm run serve\"",
"serve": "http-server ./build",
"watch": "chokidar \"static/\" \"site/\" \"template.html\" \"main.js\" -c \"npm run build\""
},
"repository": {
"type": "git",
"url": "https://git.cyberia.club/cyberia/website"
},
"license": "CC-BY-SA-4.0",
"dependencies": {
"marked": "^11.2.0",
"rimraf": "^5.0.5"
},
"devDependencies": {
"chokidar-cli": "^3.0.0",
"concurrently": "^8.2.2",
"http-server": "^14.1.1"
}
}

View file

@ -1,3 +0,0 @@
{
"m.server": "matrix.cyberia.club"
}

3
site/404.md Normal file
View file

@ -0,0 +1,3 @@
# 404
## PAGE NOT FOUND.

View file

@ -1,7 +0,0 @@
+-------------------------------------------------------+
| |
| 404 |
| |
| PAGE NOT FOUND. |
| |
+-------------------------------------------------------+

View file

@ -1,66 +0,0 @@
COVIDaware MN app investigation
starless 2020-11-27
Greetings to Netizens and Minnesotans!
It's your friendly neighborhood Cyberians here with an
update on the new COVIDaware app as announced by the
Governor.
You might be wondering: "Hey, how bullshit is this app?
Will it track me when I sleep, will it tell the cops
where I am for no good reason, will it take my firstborn
son?"
We were wondering these things, too. We're hard at work
finding answers to all these questions and more, and due
to the urgent nature of the pandemic, wanted to give you
an update.
Recently, the state of Minnesota released an app to help
manage COVID-19 contact tracing, The COVIDaware MN app is
based on an open source foss app for something called
'contact tracing', which helps people backtrack the
places they've been in the last two weeks, should they
later learn that they were contagious but pre-symptomatic
for COVID-19. Due to the delicate nature of this sort of
app, we reached out to the folks who wrote the open
source app that COVIDaware MN is based on, and got a
handful of helpful replies back.[1] We also reached out
to the state of Minnesota, but haven't gotten a response
yet.[2]
The app that COVIDaware is based on is very
privacy-friendly and the company behind it seems to have
good values, but we still don't know exactly how much
that source code was customized before it was released
for use by Minnesotans. It's likely that the state's IT
folks just added the appropriate assets to customize
links to the local health department and that sort of
thing, but we won't know that for sure without a response
to our inquiry. There's a chance they've inadvertently
done more than that, too-- we'd love to read over the
source code and check the modifications the state of
Minnesota made to the FOSS base app.
We'll let you know when we hear back from the state, but
for now, the base app looks very promising.
Additionally, should it become feasible (likely dependent
on the state of Minnesota releasing the source code for
the app), we're already hoping to be an alternative
source for the official app, should you prefer something
that's built on hardware not managed by the state of
Minnesota.
We hope to hear back from our fair state government soon,
and until then, wish you all a warm & safe holiday season!
[1]:
https://lists.cyberia.club/~cyberia/etc/%3Cfa938b37178d184b7367d33db83ec4f3%40c3f.net%3E
[2]:
https://lists.cyberia.club/~cyberia/etc/%3C597a7c3d-2be8-ba0a-dd89-f1d32354b5b4%40riseup.net%3E
source code: https://github.com/Path-Check/gaen-mobile

View file

@ -1,165 +0,0 @@
Subject: How to write a blog post for Cyberia
From: j3s
Date: 25/02/2020
Hi everyone! The new site design is live! Mad inspiration
taken from https://k1ss.org
In this blog post, I'll be walking through how to add a
new blog post to the site, but first: specific
requirements for formatting your blog post.
Tools
============
* git and git send-email (https://git-send-email.io/)
* a text editor
Requirements (in the form of commandments)
============
* thou post shalt be written in plain text
> posts appear exactly as written
* no line of thy post shalt be wider than 57 characters
> this breakeths the smol phones
> this rule isn't firm, but is a best practice
So, with the above in your head, you're ready to write a
blog post. You have questions! Naturally. Let me
preemptively answer them.
+==================+
| WHY NOT MARKDOWN?|
+==================+
because everybody knows
plain text
+====================+
| WHAT ABOUT TABLES? |
+====================+
the beauty of plain ascii is that
you get to decide how to do your own
tables.
for example:
+------------------------------------+---------+
| Col1 | Col2 |
+------------------------------------+---------+
| trash | Value 2 |
| garbage | cols |
| This is a pretty traditional table | |
+------------------------------------+---------+
or:
┌──────────────────────────────────┬─────────┬
│ Col1 │ Col2 │
├──────────────────────────────────┼─────────┼
│ Value 1 │ Value 2 │
│ Separate │ cols │
│ This is a row with only one cell │ │
└──────────────────────────────────┴─────────┴
or, simply:
random text header
---------------------------------- --------
awihfiweoifj owiefj w strange
Big blah blah time things
Blah blah blah
The choice is yours! Just keep them under 57 chars wide!
If you need wider tables, consider linking to an external
source or linking to a picture.
---THE PROCESS---
Before you put text to document, let's make things easy
on you - I've written a script to generate a new blog
post! It's very simple. Let's go through the steps
together.
-> cd ~/projects
-> git clone git@cyberia.club:services/website
-> cd website/blog
-> ./mkblog title-of-blog-post
-> ls -l # discover the new blog posts name
Now you can open the new blog post in the text editor of
your choice! Proceed with writing it.
...
...
..
...
...
..
..
..
.
..
......
Now that you're finished writing, it's time to submit
your blog to a maintainer for approval! The simplest way
of doing this is via email. We use the process built into
git for this - git-send-mail.
First, if you aren't subscribed to the misc@c3f.net
mailing list yet, be sure to subscribe.
mailto:ml@c3f.net?subject=subscribe%20misc
After you have received confirmation that you were
subscribed to the mailing list, send us a patch!
-> git add .
-> git commit -m 'Add blog post about unicorns'
-> git send-email --to="misc@c3f.net" HEAD^
Tah dah! That's it, your patch has been submitted.
~~~~~~~~~~~~~
~~LA FINALE~~
~~~~~~~~~~~~~
Now that you have submitted your own blog post, it is
time to wrap up!
I've used several different header and writing styles
throughout this document to give you an idea of how you
can write your own posts. Hopefully that is helpful and
inspiring!
I hope that you will see that plain text can be a
liberating and artistic format! The only limitation is
the character width :]
Now go forth and write your own post about unicorns, or
games, or something even slightly related to Cyberian
interests, (like how narwhals don't exist) and submit it!
Make a little project out of it! It's a good way to
broadcast branch happenings, meetings, or personal
projects. Or talk about your new RPG system, or
philosophy, or opinion!
That's all for now. As always, this post is the result of
much thought, from your humble head of services.
Love,
^(;,;)^ j3s ^(;,;)^

View file

@ -1,103 +0,0 @@
Subject: Simple trusted compute: Announcing Capsul
From: j3s
Date: 11/03/2020
+------------------------------------------------------+
| |
| ANNOUNCING CAPSUL |
| |
+------------------------------------------------------+
https://capsul.org
Over the last year we've moved at light speed. Cyberia
Computer Club is now an entity. A formal nonprofit
organization with a democratic structure.
We organized and bought a server. We crowdfunded, and
spent countless nights testing different configurations.
We strived to make the service very simple, and very
maintainable. We're very proud of what we're announcing
today. We think it's a very unique service.
Capsul is a service that provides people with compute in
the form of virtual machines. All machines run on very
fast solid state storage, and have direct T3 network
access on a shared link. We do not collect user data
(besides your email address), and discard as many logs as
we feasibly can. Every VM is automatically backed up
A more official privacy policy and TOS are coming soon.
To get you excited, here's a list of initially supported
operating systems:
operating system supported
---------------- ---------
alpine yes
ubuntu18 yes
debian10 yes
centos7 yes
centos8 yes
OpenBSD 6.6 planned
GuixSD 1.0.1 planned
Windows no, never
AIX whyyyy
Our prices start at ~$5.99 a month:
type yearly cost cpus memory ssd
------ ----------- ---- ------ ----
f1-s $70 1 512M 10G
f1-m $120 1 1024M 25G
f1-l $240 1 2048M 55G
f1-x $480 2 4096M 80G
f1-xx $960 4 8096M 160G
f1-xxx $1920 8 16G 320G
Capsul is very easy to use - no signup or registration is
necessary. Simply send an email to capsul@c3f.net with
your requirements, and you'll have VMs that you can ssh
into within a day or so.
Capsul machines are currently paid for on a yearly basis,
and we'll make every effort to remind you of payment
before your year expires. Capsul is very price-similar to
services like Vultr or Digital Ocean.
> What sets Capsul apart?
Simply: our organization and our morality.
Cyberia Computer Club values privacy, simplicity,
transparency, accessibility, and inclusion. We have no
shareholders, investors, or loaners, therefore every
change we make is directly beneficial to you. We actually
care about your experience, and it will only get better
with time - never worse.
We have a lot more coming for Capsul. The next planned
features include:
- private networking
- openbsd support
- monthly payments
- instant provisioning and decoms
- ipv6 support (with a reduced price instance type)
- a storage service (for those who want pictures)
That's all for now! Send us an email and get started with
Capsul today! :)
love,
j3s
additional resources;
Check out the Capsul website: https://capsul.org
Check out our bylaws here: https://cyberia.club/bylaws
Donate to the cause: https://cyberia.club/donate
All of our source code: https://git.cyberia.club
Chat with us on Matrix: #cyberia:cyberia.club
Chat with us on IRC: #cyberia on freenode

View file

@ -1,198 +0,0 @@
Subject: Cyberia Services Update: 2020-04
From: j3s
Date: 01/05/2020
Ohai,
A lot has happened in services-land this month, and I'm
hoping to pack as much of it as I can into this email. I
will try to be brief, as there is a lot to cover. I'll
also probably miss some stuff, woops!
Capsul
======
We added many new subscribers and many new features to
Capsul this month, both technical and financial.
* OpenBSD 6.6 support
Hello puffy! We now fully support OpenBSD 6.6 as an
operating system choice on Capsul, and will support
future releases of OpenBSD as well.
* Streamlined BTC/XMR payments
Pay with bitcoin or monero? There is now a simple
payment processor you may use to make donations or pay
for Capsuls. See https://cyberia.club/donate for details.
* Guix System 1.1.0 support
Guix System support is very near completion! There is one
bug left to squash before it's available as a fully
supported option! :D
* IPv6-only support
Soon, you will be able to purchase IPv6-only Capsuls at
a $2 per month discount from IPv4 prices.
* Cheaper base prices
Pricing will very soon be heavily revised, and all
Capsuls will be cheaper. Existing customers will be
refunded the difference between the price they paid and
the new Capsul price.
* À la carte disk size selection
- All instances will start with a fully backed-up 10GB
root volume.
- We will be capable of taking variable disk size
requests at 0.2c per GB per month! You are no longer
stuck with the disk size your instance came with.
- These additional disks are not covered by our backup
schedule, otherwise we'd run out of disk space almost
instantly :D we may offer a paid backup system for these
additional disks in the future.
A huge thank you to our early Capsul users, I hope that
everything has been running smoothly for you.
Nullhex
=======
I have not focused on Nullhex much throughout April, but
I do have some exciting ideas to share. Hit me up if
you're interested.
* Reputation
Nullhex emails are no longer marked as spam by
Protonmail or Gmail, our domain reputation has grown
substantially.
Matrix
======
Matrix has cemented itself as the center of our
communication platform. If you aren't there already, feel
free to register at https://matrix.cyberia.club and join
the conversation.
If you don't like Matrix for some other reason, email me
directly and we can figure out a way to bridge you into
our conversations.
* Backend updated
The backend has been updated & now supports cross-signing.
* Bridging
We are considering bridging specific Matrix rooms with
specific Discord rooms; more to come on this front.
Riot
====
* End to end encryption by default
Riot-web is receiving an update **next week**(tm) that
enables end to end encryption and cross-signing by
default for all private conversations. Please prepare
thyselves! More deets:
https://lists.cyberia.club/~cyberia/ops/%3C126414c4-80bc-1d49-570e-cf3eba9e8362%40c3f.net%3E
* New preferences
There are two new potentially userful riot-web
preferences, in case you may have missed them:
- sort rooms alphabetically
- auto-syntax-highlight-detection
Forge
=====
Forge is our development and project tool. It is intended
to be used by anyone in the Cyberia community to host
their projects, and Cyberia will eventually use it
exclusively to host our group projects.
Forge is approaching the end of the alpha phase. There is
still a bit of rockiness, but we've mostly settled on it
as a full-fledged service, supported by Cyberia Services.
Forge handles the following (for now):
* git repositories
* mailing lists
* ticket trackers
* git-driven wiki pages
* paste service
Forge may handle the following in the future, if we have
need for it:
* builds
* continuous integration
* mercurial repositories
Registration is now open to the public, sign up today!
https://forge.cyberia.club
Mailing Lists
=============
There are now three important mailing lists that people
might consider subscribing to:
announce@cyberia.club = general announcements like this
ops@cyberia.club = services branch discussion
operational stuff = etc@cyberia.club - everything else
See them and read about them on the Forge:
https://lists.cyberia.club/
If you have questions or comments about this announcement
letter, feel free to email ops@cyberia.club and ask us
about it :)
Misc
====
* Prometheus awareness
We monitor our systems with Prometheus - like
everything else Cyberia does, we operate it publically.
Check it out at https://prometheus.cyberia.club
* Grafana awareness
We recently set up Grafana, and fack has been hacking
on some dashboards. It's available at
https://grafana.cyberia.club for public consumption. If
you'd like a read-write account, email me and I'll set
one up for you.
* misc@c3f.net deprecated
The misc@c3f.net list has been moved to the
etc@cyberia.club list. I moved all previous misc@c3f.net
subscribers to the new list, no action is required.
* Infra Hackathon
There are thoughts about hosting a huge infra hackathon
to move our systems from Debian to Alpine, with a giant
laundry list of crap to do. We will be targeting a full
weekend in the future. Just a heads up.
* Operations Handbook
We have decided that a monorepo for all of our
operational-related things is appropriate. See the
handbook here:
https://git.cyberia.club/services/ops-handbook/about
A final note: our services would be useless without the
community that makes use of them. Thanks for all of your
valuable feedback and discussion. You're all wonderful.
Let's open the next world together.
Your lovely head of services,
j3s

View file

@ -1,220 +0,0 @@
CAPSUL
rollin' onwards with a web application
Forest 2020-05-20
WHAT'S NEW IN CAPSUL?
Capsul has been operated by hand so far, with business
conducted via email. Obviously, this isn't the best
user experience. If no one is on the other end at the
time, the user might feel as if they are shouting into
the void.
Ideally, users could pay for service, create and destroy
capsuls, and monitor their capsul's status at any time.
So we set out to create an application enabling that,
while keeping things as simple as possible. As of today,
you can experience it firsthand!
--> https://capsul.org/ <--
WHAT IS CAPSUL? WHY WOULD ANYONE DO THAT?
Capsul started out as a "for fun" project to host
multiple VMs with different operating systems on the same
physical server.
A cloud compute provider experiment to find out:
- How hard is it to build basic compute-as-service
functionality that has been mythologized and
commoditized by some of the biggest software
businesses of all time.
- What problems have to be solved in order to do
this at a small scale?
- And last but not least,
how much better-than-the-big-boys can we do? :P
I heard about Capsul and I thought, cool, why not.
At first, I was slightly dismissive of the project --
why re-invent the wheel? There are lots of established
tools for creating cloud services already out there,
surely they would be hard for us to measure up to.
Of course, you could argue, that's not the point.
It's all about the journey, popping the hood and learning
how things are put together.
But on the other hand, Capsul is something that we want
to use, not just a pet project.
Can I depend on it?
/⁀\ ___/‾⁀|__,
(‾‾____‾‾) | xx . .|
/ \ | [ >)
/ \ | ‶` ‾
|
I WANT TO BELIEVE | (X) DOUBT
Whether excited or doubtful, the tone of the question
expresses the real utility and risk associated with DIY.
We have to **make our own seat belts** for this, an
experience and practice that I personally feel is highly
under-rated.
I don't want to give up and just leave it to the experts.
I want to build the confidence necessary to make my own
systems, and to measure thier stability and efficacy.
(\_/)
[. .]
==<.>==
" Anyone can Cook "
It probably helps that I've never seen a friend get hurt
because of a flaw in something I designed, but even if
I had, I'd like to think that I'd continue believing
in the idea that technology is never "beyond" us.
I could never make it through Technoholics Anonymous,
because I'd never be able believe a Higher Power will
restore sanity to the machine and save us from ourselves.
ABOUT THE DEVELOPMENT PROCESS
First step was to chose a language and framework.
We made this decision (Python 3, Flask) almost entirely
based on which language was the most commonly known in
our group. I was the only one who had never used Python
before, and I felt up to the task of learning a language
as a part of this process.
Next, we had to decide how the system would work.
How would we secure user's accounts? How would users
pay for capsuls? Would it be like a subscription,
would you buy compute credits, or a receive a bill at
the end of the month?
In the interest of simplicity, we opted to use a
tumblr-style magic-link login instead of requiring
the user to provide a password. So, you have to
receive an email and click a link in that email
every time you log in.
We also decided to go with the "purchase credits, then
create capsul" payment workflow, because it was the
easiest way we could accept both credit card and
cryptocurrency payments, and we believed that requiring
the user to pay first was an appropriate level of
friction for our service, at least right now.
I had never worked on a project that integrated
with a payment processor or had a "dollars" column in a
database table before. I felt like I worked at the
Federal Reserve, typing
INSERT INTO payments (account, dollars) VALUES
('forest', 20.00);
into my database during development.
The application has three backends:
- a postgres database where all of the payment and
account data is stored
- the virtualization backend which lifecycles the
virtual machines and provides information about them
(whether or not they exist, and current IP address)
- Prometheus metrics database which allows the
web application to display real-time metrics for each
capsul.
All of the payments are handled by external payment
processors Stripe and BTCPay Server, so the application
doesn't have to deal with credit cards or cryptocurrency
directly. What's even better, because BTCPay Server
tracks the status of invoices automatically, we can
accept unconfirmed transactions as valid payments and
then rewind the payment if we learn that it was a
double-spend attack. No need to bother the user about
Replace By Fee or anything like that.
The initial development phase took one week. Some days
I worked on it for 12+ hours, I think. I was having a
blast. I believe that the application should be secure
against common types of attacks. I kept the OWASP
Top 10 Web Application Security Risks in mind while I was
working on this project, and addressed each one.
1. Injection
We use 100% parameterized queries, and we apply strict
validation to all arguments of all shell scripts.
2. Broken Authentication
We have used Flask's session implementation,
we did not roll our own sessions.
3. Sensitive Data Exposure
We do not handle particularly sensitive data such as
cryptocurrency wallets or credit card information.
4. XML External Entities (XXE)
We do not parse XML.
5. Broken Access Control
We have added the user's email address to all database
queries that we can. This email address comes from the
session, so hopefully you can only ever get information
about YOUR account, and only if you are logged in.
6. Security Misconfiguration
We made sure that the application does not display error
messages to the user, we are not running Flask in
development mode, we are not running Flask as the root
user, the server it runs on is well secured and up to
date, etc.
7. Cross-Site Scripting (XSS)
We apply strict validation to user inputs that will be
represented on the page, whether they are path variables,
query parameters, form fields, etc.
8. Insecure Deserialization
We use the most up-to-date json parsing from the
Python standard library.
9. Using Components with Known Vulnerabilities
We did check the CVE lists for any known issues with the
versions of Flask and psycopg2 (database connector),
requests, and various other packages that we are using,
although automating this process would be much better
going forward.
10. Insufficient Logging & Monitoring
We may have some room for improvement here, however,
verbose logging goes slightly against the "we don't
collect any more data about you than we need to" mantra.
If you would like to take a peek at the code, it's
hosted on our git server:
https://git.cyberia.club/cyberia/capsul-flask

View file

@ -1,411 +0,0 @@
CAPSUL
rumors of my demise have been greatly exaggerated
Forest 2021-12-17
WHAT IS THIS?
If you're a wondering "what is capsul?", see:
https://capsul.org
Here's a quick summary of what's in this post:
- cryptocurrency payments are back
- we visited the server in person for maintenance
- most capsuls disks should have trim/discard support
now, so you can run the fstrim command to optimize
your capsul's disk. (please do this, it will save us
a lot of disk space!!)
- we updated most of our operating system images and
added a new rocky linux image!
- potential ideas for future development on capsul
- exciting news about a new server and a new capsul fork
being developed by co-op cloud / servers.coop
~
WHAT HAPPENED TO THE CRYPTOCURRENCY PAYMENT OPTION?
Life happens. Cyberia Computer Club has been hustling
and bustling to build out our new in-person space in
Minneapolis, MN:
https://wiki.cyberia.club/hypha/cyberia_hq/faq
Hackerspace, lab, clubhouse, we aren't sure what to call
it yet, but we're extremely excited to finish with the
renovations and move in!
In the meantime, something went wrong with the physical
machine hosting our BTCPay server and we didn't have
anywhere convenient to move it, nor time to replace it,
so we simply disabled cryptocurrency payments
temporarily in September 2021.
Many of yall have emailed us asking "what gives??",
and I'm glad to finally be able to announce that
"the situation has been dealt with",
we have a brand new server and the blockchain syncing
process is complete, cryptocurrency payments in bitcoin,
litecoin, and monero are back online now!
--> https://capsul.org/payment/btcpay <--
~
THAT ONE TIME CAPSUL WAS ALMOST fsync()'d TO DEATH
Guess what? Yall loved capsul so much, you wore our disks
out. Well, almost.
We use redundant solid state disks + the ZFS file system
for your capsul's block storage needs, and it turns out
that some of our users like to write files. A lot.
Over time, SSDs will wear out, mostly dependent on how
many writes hit the disk. Baikal, the server behind
capsul.org, is a bit different from a typical desktop
computer, as it hosts about 100 virtual machines, each
with thier own list of application processes, for over 50
individual capsul users, each of whom may be providing
services to many other individuals in turn.
The disk-wear-out situation was exacerbated by our
geographical separation from the server; we live in
Minneapolis, MN, but the server is in Georgia. We wanted
to install NVME drives to expand our storage capacity
ahead of growing demand, but when we would mail PCI-e to
NVME adapters to CyberWurx, our datacenter colocation
provider, they kept telling us the adapter didn't fit
inside the 1U chassis of the server.
At one point, we were forced to take a risk and undo the
redundancy of the disks in order to expand our storage
capacity and prevent "out of disk space" errors from
crashing your capsuls. It was a calculated risk, trading
certain doom now for the potential possibility of doom
later.
Well, time passed while we were busy with other projects,
and those non-redundant disks started wearing out.
According to the "smartmon" monitoring indicator, they
reached about 25% lifespan remaining. Once the disk
theoretically hit 0%, it would become read-only in order
to protect itself from total data loss.
So we had to replace them before that happened.
https://picopublish.sequentialread.com/files/smartmon_dec2021.png
We were so scared of what could happen if we slept on
this that we booked a flight to Atlanta for maintenance.
We wanted to replace the disks in person, and ensure we
could restore the ZFS disk mirroring feature.
We even custom 3d-printed a bracket for the tiny PCI-e
NVME drive that we needed in order to restore redundancy
for the disks, just to make 100% sure that the
maintenance we were doing would succeed & maintain
stability for everyone who has placed thier trust in us
and voted with thier shells, investing thier time and
money on virtual machines that we maintain on a volunteer
basis.
https://picopublish.sequentialread.com/files/silly-nvme-bracket2.jpg
Unfortunately, "100% sure" was still not good enough,
the new NVME drive didn't work as a ZFS mirroring partner
at first ⁠— the existing NVME drive was 951GB, and the
one we had purchased was 931GB. It was too small and ZFS
would not accept that. f0x suggested:
> [you could] start a new pool on the new disk,
> zfs send all the old data over, then have an
> equally sized partition on the old disk then add
> that to the mirror
But we had no idea how to do that exactly or how long it
would take & we didn't want to change the plan at the
last second, so instead we ended up taking the train from
the datacenter to Best Buy to buy a new disk instead.
The actual formatted sizes of these drives are typically
never printed on the packaging or even mentioned on PDF
datasheets online. When I could find an actual number
for a model, it was always the lower 931GB.
So, we ended up buying a "2TB" drive as it was the only
one BestBuy had which we could guarantee would work.
So, lesson learned the hard way. If you want to use ZFS
mirroring and maybe replace a drive later, make sure to
choose a fixed partition size which is slightly smaller
than the typical avaliable space on the size of drive
you're using, in case the replacement drive was
manufactured with slightly less avaliable formatted
space!!!
Once mirroring was restored, we made sure to test it
in practice by carefully removing a disk from the server
while it's running:
https://picopublish.sequentialread.com/files/zfs_disk_replacement/
While we could have theoretically done this maintenance
remotely with the folks at CyberWurx performing the
physical parts replacement per a ticket we open with
them, we wanted to be sure we could meet the timeline
that the disks had set for **US**. That's no knock on
CyberWurx, moreso a knock on us for yolo-ing this server
into "production" with tape and no test environment :D
The reality is we are vounteer supported. Right now
the payments that the club receives from capusl users
don't add up to enough to compensate (make ends meet for)
your average professional software developer or sysadmin,
at least if local tech labor market stats are to be
believed.
We are all also working on other things, we can't devote
all of our time to capsul. But we do care about capsul,
we want our service to live, mostly because we use it
ourselves, but also because the club benefits from it.
We want it to be easy and fun to use, while also staying
easy and fun to maintain. A system that's agressively
maintained will be a lot more likely to remain maintained
when it's no one's job to come in every weekday for that.
That's why we also decided to upgrade to the latest
stable Debian major version on baikal while we were
there. We encountered no issues during the upgrade
besides a couple of initial omissions in our package
source lists. The installer also notified us of several
configuration files we had modified, presenting us with
a git-merge-ish interface that displayed diffs and
allowed us to decide to keep our changes, replace our
file with the new version, or merge the two manually.
I can't speak more accurately about it than that, as
j3s did this part and I just watched :)
~
LOOKING TO THE FUTURE
We wanted to upgrade to this new Debian version because
it had a new major version of QEMU, supporting virtio-blk
storage devices that can pass-through file system discard
commands to the host operating system.
We didn't see any benefits right away, as the vms
stayed defined in libvirt as their original machine types,
either pc-i440fx-3.1 or a type from the pc-q35 family.
After returning home, we noticed that when we created
a new capsul, it would come up as the pc-i440fx-5.2
machine type and the main disk on the guest would display
discard support in the form of a non-zero DISC-MAX size
displayed by the `lsblk -D` command:
localhost:~# sudo lsblk -D
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sr0 0 0B 0B 0
vda 512 512B 2G 0
Most of our capsuls were pc-i440fx ones, and we upgraded
them to pc-i440fx-5.2, which finally got discards working
for the grand majority of capsuls.
If you see discard settings like that on your capsul,
you should also be able to run `fstrim -v /` on your
capsul which saves us disk space on baikal:
welcome, cyberian ^(;,;)^
your machine awaits
localhost:~# sudo lsblk -D
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sr0 0 0B 0B 0
vda 512 512B 2G 0
localhost:~# sudo fstrim -v /
/: 15.1 GiB (16185487360 bytes) trimmed
^ Please do this if you are able to!
You might also be able to enable an fstrim service or
timer which will run fstrim to clean up and optimize
your disk periodically.
However, some of the older vms were the pc-q35 family of
QEMU machine type, and while I was able to get one of
ours to upgrade to pc-i440fx-5.2, discard support still
did not show up in the guest OS. We're not sure what's
happening there yet.
We also improved capsul's monitoring features; we began
work on proper infrastructure-as-code-style diffing
functionality, so we get notified if any key aspects of
your capsuls are out of whack. In the past this had been
an issue, with DHCP leases expiring during maintenance
downtimes and capsuls stealing each-others assigned IP
addresses when we turn everything back on.
capsul-flask now also includes an admin panel with
1-click-fix actions built in, leveraging this data:
https://git.cyberia.club/cyberia/capsul-flask/src/commit/b013f9c9758f2cc062f1ecefc4d7deef3aa484f2/capsulflask/admin.py#L36-L202
https://picopublish.sequentialread.com/files/admin-panel.jpg
I acknowledge that this is a bit of a silly system,
but it's an artifact of how we do what we do. Capsul
is always changing and evolving, and the web app was
built on the idea of simply "providing a button for"
any manual action that would have to be taken,
either by a user or by an admin.
At one point, back when capsul was called "cvm",
_everything_ was done by hand over email and the
commandline, so of course anything that reduced the
amount of manual administration work was welcome,
and we are still working on that today.
When we build new UIs and prototype features, we learn
more about how our system works, we expand what's
possible for capsul, and we come up with new ways to
organize data and intelligently direct the venerable
virtualization software our service is built on.
I think that's what the "agile development" buzzword from
professional software development circles was supposed to
be about: freedom to experiment means better designs
because we get the opportunity to experience some of the
consequences before we fully commit to any specific
design. A touch of humility and flexibility goes a
long way in my opinion.
We do have a lot of ideas about how to continue
making capsul easier for everyone involved, things
like:
1. Metered billing w/ stripe, so you get a monthly bill
with auto-pay to your credit card, and you only pay
for the resources you use, similar to what service
providers like Backblaze do.
(Note: of course we would also allow you to
pre-pay with cryptocurrency if you wish)
2. Looking into rewrite options for some parts of the
system: perhaps driving QEMU from capsul-flask
directly instead of going through libvirt,
and perhaps rewriting the web application in golang
instead of sticking with flask.
3. JSON API designed to make it easier to manage capsuls
in code, scripts, or with an infrastructure-as-code
tool like Terraform.
4. IO throttling your vms:
As I mentioned before, the vms wear out the disks
fast. We had hoped that enabling discards would help
with this, but it appears that it hasn't done much
to decrease the growth rate of the smartmon wearout
indicator metric.
So, most likely we will have to enforce some form of
limit on the amount of disk writes your capsul can
perform while it's running day in and day out.
80-90% of capsul users will never see this limit,
but our heaviest writers will be required to either
change thier software so it writes less, or pay more
money for service. In any case, we'll send you a
warning email long before we throttle your capsul's
disk.
And last but not least, Cybera Computer Club Congress
voted to use a couple thousand of the capsulbux we've
recieved in payment to purchase a new server, allowing
us to expand the service ahead of demand and improve our
processes all the way from hardware up.
(No tape this time!)
https://picopublish.sequentialread.com/files/baikal2
Shown: Dell PowerEdge R640 1U server with two
10-core xeon silver 4114 processors and 256GB of RAM.
(Upgradable to 768GB!!)
~
CAN I HELP?
Yes! We are not the only ones working on capsul these
days. For example, another group, https://coopcloud.tech
has forked capsul-flask and set up thier own instance at
https://yolo.servers.coop
Thier source code repository is here
(not sure this is the right one):
https://git.autonomic.zone/3wordchant/capsul-flask
Having more people setting up instances of capsul-flask
really helps us, whether folks are simply testing or
aiming to run it in production like we do.
Unfortunately we don't have a direct incentive to
work on making capsul-flask easier to set up until folks
ask us how to do it. Autonomic helped us a lot as they
made thier way through our terrible documentation and
asked for better organization / clarification along the
way, leading to much more expansive and organized README
files.
They also gave a great shove in the right direction when
they decided to contribute most of a basic automated
testing implementation and the beginnings of a JSON API
at the same time. They are building a command line tool
called abra that can create capsuls upon the users
request, as well as many other things like installing
applications. I think it's very neat :)
Also, just donating or using the service helps support
cyberia.club, both in terms of maintaing capsul.org and
reaching out and supporting our local community.
We accept donations via either a credit card (stripe)
or in Bitcoin, Litecoin, or Monero via our BTCPay server:
https://cyberia.club/donate
For the capsul source code, navigate to:
https://git.cyberia.club/cyberia/capsul-flask
As always, you may contact us at:
mailto:support@cyberia.club
Or on matrix:
#services:cyberia.club
For information on what matrix chat is and how to use it,
see: https://cyberia.club/matrix
Forest 2021-12-17

View file

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Cyberia Blog</title>
<description>A delicious computer club</description>
<link>https://cyberia.club</link>
<ttl>1800</ttl>
<atom:link href="https://cyberia.club/blog/blog.xml" rel="self" type="application/rss+xml" />
<item>
<title>01/05/2020: Cyberia Services Update: 2020-04</title>
<description></description>
<link>https://cyberia.club/blog/20200501a</link>
<guid isPermaLink="true">https://cyberia.club/blog/20200501a</guid>
<pubDate>Fri, 01 May 2020 00:00:00 +0000</pubDate>
</item>
<item>
<title>11/03/2020: Simple trusted compute: Announcing Capsul</title>
<description></description>
<link>https://cyberia.club/blog/20200311a</link>
<guid isPermaLink="true">https://cyberia.club/blog/20200311a</guid>
<pubDate>Wed, 11 Mar 2020 00:00:00 +0000</pubDate>
</item>
<item>
<title>25/02/2020: How to write a blog post for Cyberia</title>
<description>A necessary post</description>
<link>https://cyberia.club/blog/20200225a</link>
<guid isPermaLink="true">https://cyberia.club/blog/20200225a</guid>
<pubDate>Tue, 25 Feb 2020 00:00:00 +0000</pubDate>
</item>
<item>
<title>20/05/2020: Capsul rollin' onward with a Web Application</title>
<description>Forest describes his thought process when building the capsul.org web application</description>
<link>https://cyberia.club/blog/20200520-capsul-rollin-onward-with-a-web-application</link>
<guid isPermaLink="true">https://cyberia.club/blog/20200520-capsul-rollin-onward-with-a-web-application</guid>
<pubDate>Wed, 20 May 2020 00:00:00 +0000</pubDate>
</item>
<item>
<title>COVIDaware MN app investigation</title>
<description></description>
<link>https://cyberia.club/blog/2020-11-27</link>
<guid isPermaLink="true">https://cyberia.club/blog/2020-11-27</guid>
<pubDate>Fri, 27 Nov 2020 13:46:13 UTC</pubDate>
</item>
<item>
<title>17/12/2021: Capsul - Rumors Of My Demise Have Been Greatly Exaggerated</title>
<description>Forest regails you with tales of maintenance, links to pictures and video, and hopes for the future of capsul</description>
<link>https://cyberia.club/blog/20211217-capsul-maintenance-updates</link>
<guid isPermaLink="true">https://cyberia.club/blog/20211217-capsul-maintenance-updates</guid>
<pubDate>Sat, 18 Dec 2021 00:00:00 +0000</pubDate>
</item>
</channel>
</rss>

View file

@ -1,30 +0,0 @@
#!/bin/sh -e
date=$(date +%Y-%m-%d)
rfc822date=$(date "+%a, %e %b %Y %H:%M:%S %Z")
subject="${1?Please enter your post title}"
cat > "$date.txt" <<EOF
# $subject - ($date)
EOF
rss="<item>
<title>$subject</title>
<description></description>
<link>https://cyberia.club/blog/$date</link>
<guid isPermaLink=\"true\">https://cyberia.club/blog/$date</guid>
<pubDate>$rfc822date</pubDate>
</item>"
entry="- <a href=/blog/$date.html>$subject</a>"
while read -r line; do
printf '%s\n' "$line"
case $line in *'<atom'*) printf '%s\n' "$rss"; esac
done < blog.xml > blog.xml.new
mv -f blog.xml.new blog.xml
printf '%s\n' "$entry" >> ../blog.txt

110
site/calendar.md Normal file
View file

@ -0,0 +1,110 @@
# CALENDAR
<p class="center bold italic">all times are CST/CDT</p>
## 2024
| Event | Date & Time | Location |
|------------------|-----------------|------------------|
| Congress | 01-28 1200-1400 | mumble |
| Congress | 04-28 1200-1400 | mumble |
| Congress | 07-28 1200-1400 | mumble |
| Congress | 10-27 1200-1400 | mumble |
## 2023
| Event | Date & Time | Location |
|------------------|-----------------|------------------|
| Congress | 01-29 1200-1400 | mumble |
| Congress | 04-30 1200-1400 | mumble |
| Pride | 06-24 1000-1900 | loring park |
| Pride | 06-25 1000-1800 | loring park |
| Congress | 07-30 1200-1400 | mumble |
| Congress | 10-29 1200-1400 | mumble |
## 2022
| Event | Date & Time | Location |
|------------------|-----------------|------------------|
| Congress | 01-30 1200-1400 | mumble |
| Congress | 04-30 1200-1400 | mumble |
| Congress | 07-31 1200-1400 | mumble |
| Congress | 10-31 1200-1400 | mumble |
## 2021
| Event | Date & Time | Location |
|------------------|-----------------|------------------|
| Congress | 01-31 1200-1400 | mumble |
| Meta | 02-07 1200-1400 | mumble |
| Meta | 02-14 1200-1400 | mumble |
| Irreg-Congress | 02-21 1300-1500 | mumble |
| Orca Jam Day | 03-13 0000-1800 | mumble & stream |
| Congress | 04-25 1200-1400 | mumble |
| Pride | 07-16 0900-1800 | loring park |
| Pride | 07-17 0900-1800 | loring park |
| Congress | 07-25 1200-1400 | mumble |
| Congress | 10-31 1200-1400 | mumble |
## 2020
| Event | Date & Time | Location |
|------------------|-----------------|------------------|
| Meta | 01-12 1400-1530 | bobs java hut |
| Meta | 01-13 1800-2030 | caffetto |
| Congress | 01-19 1300-1500 | kurt home |
| Bylaw | 02-10 1800-1930 | caffetto |
| Games Bash | 02-15 1400-2359 | aimless home |
| Rapture | 03-06 1900-0200 | ground zero |
| Hackathon | 03-08 1000-1600 | j3s home |
| Meta | 03-24 1800-2000 | cyberia cafe |
| Congress | 03-29 1200-1400 | mumble |
| Logo work group | 04-23 1400-2222 | mumble |
| Hackathon | 05-09 1100-1900 | mumble |
| Hackathon | 05-10 1100-1500 | mumble |
| DnD thing | 05-15 1800-???? | cyberia cafe |
| Congress | 04-26 1200-1400 | mumble |
| Congress | 07-26 1200-1400 | mumble |
| Services | 08-20 1700-1800 | cyberia cafe |
| Congress | 10-25 1200-1400 | mumble |
| Write brief | 12-08 1900-2000 | cyberia cafe |
## 2019
| Event | Date & Time | Location |
|------------------|-----------------|------------------|
| Hackathon | 12-09 1200-1800 | j3s home |
| Hackathon | 12-21 1000-1600 | fack home |
| Meta | 12-23 1730-1900 | j3s home |
---
## EVENT DESCRIPTIONS
### Hackathons
laptops, projects, and caffeine. real hacker hours
bring art projects, tech projects, knitting projects
(positive and supportive vibes only)
### Meta
politics, bylaw ideas, organization
minority opinions appreciated
(generally quiet and academic, laptop recommended)
### Rapture
loud music, flashing lights
open projector-- show us something cool
(alcohol, fog machines, power, but no network)
### Games bash
alcohol, comradery, video games, board games
role-playing games, socializing
(power, network, quiet spaces available)
### Movie night
ask in the Matrix chat for moar info!

View file

@ -1,129 +0,0 @@
+-------------------------------------------------------+
| |
| CALENDAR |
| |
+-------------------------------------------------------+
_____________________________________________________
/ \
/ 2024 \
| * all times are CST/CDT * |
|-------------------------------------------------------|
| Event | Date & Time | Location |
| Congress | 01-28 1200-1400 | mumble |
| Congress | 04-28 1200-1400 | mumble |
| Congress | 07-28 1200-1400 | mumble |
\ Congress | 10-27 1200-1400 | mumble /
\_____________________________________________________/
_____________________________________________________
/ \
/ 2023 \
| * all times are CST/CDT * |
|-------------------------------------------------------|
| Event | Date & Time | Location |
| Congress | 01-29 1200-1400 | mumble |
| Congress | 04-30 1200-1400 | mumble |
| Pride | 06-24 1000-1900 | loring park |
| Pride | 06-25 1000-1800 | loring park |
| Congress | 07-30 1200-1400 | mumble |
\ Congress | 10-29 1200-1400 | mumble /
\_____________________________________________________/
_____________________________________________________
/ \
/ 2022 \
| * all times are CST/CDT * |
|-------------------------------------------------------|
| Event | Date & Time | Location |
| FNH | 01-14 1800-2100 | layer zero |
| Congress | 01-30 1200-1400 | mumble |
| Congress | 04-30 1200-1400 | mumble |
| Congress | 07-31 1200-1400 | mumble |
\ Congress | 10-31 1200-1400 | mumble /
\_____________________________________________________/
_____________________________________________________
/ \
/ 2021 \
| * all times are CST/CDT * |
|-------------------------------------------------------|
| Event | Date & Time | Location |
| Congress | 01-31 1200-1400 | mumble |
| Meta | 02-07 1200-1400 | mumble |
| Meta | 02-14 1200-1400 | mumble |
| Irreg-Congress | 02-21 1300-1500 | mumble |
| Orca Jam Day | 03-13 0000-1800 | mumble & stream |
| Congress | 04-25 1200-1400 | mumble |
| Pride | 07-16 0900-1800 | loring park |
| Pride | 07-17 0900-1800 | loring park |
| Congress | 07-25 1200-1400 | mumble |
\ Congress | 10-31 1200-1400 | mumble /
\_____________________________________________________/
_____________________________________________________
/ \
/ 2020 \
| * all times are CST/CDT * |
|-------------------------------------------------------|
| Event | Date & Time | Location |
| Meta | 01-12 1400-1530 | bobs java hut |
| Meta | 01-13 1800-2030 | caffetto |
| Congress | 01-19 1300-1500 | kurt home |
| Bylaw | 02-10 1800-1930 | caffetto |
| Games Bash | 02-15 1400-2359 | aimless home |
| Rapture | 03-06 1900-0200 | ground zero |
| Hackathon | 03-08 1000-1600 | j3s home |
| Meta | 03-24 1800-2000 | cyberia cafe |
| Congress | 03-29 1200-1400 | mumble |
| Logo work group | 04-23 1400-2222 | mumble |
| Hackathon | 05-09 1100-1900 | mumble |
| Hackathon | 05-10 1100-1500 | mumble |
| DnD thing | 05-15 1800-???? | cyberia cafe |
| Congress | 04-26 1200-1400 | mumble |
| Congress | 07-26 1200-1400 | mumble |
| Services | 08-20 1700-1800 | cyberia cafe |
| Congress | 10-25 1200-1400 | mumble |
\ Write brief | 12-08 1900-2000 | cyberia cafe /
\_____________________________________________________/
_____________________________________________________
/ \
/ 2019 \
| * all times are CST/CDT * |
|-------------------------------------------------------|
| Event | Date & Time | Location |
| Hackathon | 12-09 1200-1800 | j3s home |
| Hackathon | 12-21 1000-1600 | fack home |
\ Meta | 12-23 1730-1900 | j3s home /
\_____________________________________________________/
+-------------------------------------------------------+
| |
| EVENT DESCRIPTIONS |
| |
| * Hackathons |
| laptops, projects, and caffeine. real hacker hours |
| bring art projects, tech projects, knitting projects |
| (positive and supportive vibes only) |
| |
| * Meta |
| politics, bylaw ideas, organization |
| minority opinions appreciated |
| (generally quiet and academic, laptop recommended) |
| |
| * Rapture |
| loud music, flashing lights |
| open projector-- show us something cool |
| (alcohol, fog machines, power, but no network) |
| |
| * Games bash |
| alcohol, comradery, video games, board games |
| role-playing games, socializing |
| (power, network, quiet spaces available) |
| |
| * Movie night |
| ask in the Matrix chat for moar info! |
| |
| |
+-------------------------------------------------------+

View file

@ -1,29 +0,0 @@
BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:America/Chicago
BEGIN:DAYLIGHT
TZOFFSETFROM:-0600
TZOFFSETTO:-0500
TZNAME:CDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0500
TZOFFSETTO:-0600
TZNAME:CST
DTSTART:19701101T020000
RRULE:FREQ=MONTHLY;INTERVAL=3;BYDAY=SU;BYSETPOS=-1;WKST=SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:Cyberia Congress Meeting
DTSTART;TZID=America/Chicago:20220430T120000
DTEND;TZID=America/Chicago:20220430T130000
DESCRIPTION:https://cyberia.club/calendar\n\nhttps://cyberia.club/mumble
LOCATION:mumble
END:VEVENT
END:VCALENDAR

28
site/culture.md Normal file
View file

@ -0,0 +1,28 @@
# CULTURE
## MANIFESTO
a collective of hackers and technology enthusiasts in Minnesota fighting for a kinder, more private, free world
a world where not everything in tech is sponsored
a world of makers
we hack on projects and inspire one another
we provide ethical tech services for ourselves and a variety of local organizations
we communicate via meatspace, matrix, mailing lists, signal, IRC, and mumble
if you have felt isolated by technology rather than embraced,
please, join us. together we can close the world and open the next
## TESTIMONIALS
* I am a pioneer of spreadsheets related weirdness
\- cass
* stumbled upon at random, did not regret joining all their rooms
\- f0x
* agree with f0x
\- user_0x78
* I love this group for the abundance of kindhearted people, the commitment to establishing a positive environment, and of course the tremendous concentration of technical acumen.
\- symys

View file

@ -1,58 +0,0 @@
+-------------------------------------------------------+
| |
| CULTURE |
| |
+-------------------------------------------------------+
+-------------------------------------------------------+
| |
| MANIFESTO |
| |
| a collective of hackers and technology enthusiasts |
| in Minnesota |
| |
| fighting for a kinder, more private, free world |
| |
| a world where not everything in tech is sponsored |
| |
| a world of makers |
| |
| we hack on projects and inspire one another |
| |
| we provide ethical tech services for ourselves and a |
| variety of local organizations |
| |
| we communicate via meatspace, matrix, mailing lists, |
| signal, IRC, and mumble |
| |
| if you have felt isolated by technology rather than |
| embraced |
| |
| please, join us. together we can close the world |
| |
| and open the next |
| |
| |
+-------------------------------------------------------+
+-------------------------------------------------------+
| |
| TESTIMONIALS |
| |
| * I am a pioneer of spreadsheets related weirdness |
| - cass |
| |
| * stumbled upon at random, did not regret joining all |
| their rooms |
| - f0x |
| |
| * agree with f0x |
| - user_0x78 |
| |
| * I love this group for the abundance of kindhearted |
| people, the commitment to establishing a positive |
| environment, and of course the tremendous |
| concentration of technical acumen. |
| - symys |
| |
+-------------------------------------------------------+

View file

@ -1,27 +0,0 @@
+-------------------------------------------------------+
| |
| DOCS |
| |
| * all docs for all services and workflows be here |
| |
| |
+-------------------------------------------------------+
design:
- <a href=/docs/style>style</a>
payment:
- <a href=/docs/reimbursement>reimbursement requests</a>
- <a href=/docs/btc>bitcoin</a>
- <a href=/docs/xmr>xmr/monero</a>
services:
- <a href=/docs/matrix>matrix</a>
- <a href=/docs/git>git</a>
- <a href=/docs/mumble>mumble</a>
- <a href=/docs/tor>tor</a>
operations:
- <a href="https://git.cyberia.club/services/ops-handbook/about/">ops-handbook</a>
etc:

View file

@ -1,24 +0,0 @@
BITCOIN
Learn about Bitcoin: https://bitcoin.org
Cyberia Bitcoin Wallet Address:
bc1qhrh4lz88cexh3vxqt54l30a9f0gah73gxwfswf
Cyberia Bitcoin Wallet QR code:
▄▄▄▄▄▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄▄▄▄▄▄▄
█ ▄▄▄ █ ▄██▀▀▄▀▄▀▀▀▄▄ █ ▄▄▄ █
█ ███ █ █▀▀▄█▀▀█▄▀ ▄█ █ ███ █
█▄▄▄▄▄█ ▄ █▀▄ █ ▄ █▀▄ █▄▄▄▄▄█
▄▄▄▄ ▄ ▄ █▄█ ▄▀ █ ▄▄▄ ▄▄▄ ▄
█▄▄█▀▀▄ █▄█▄█▄ ▄ ▀▀▀▀█▀▄▄▄▀
█▄▀██▀▄▀ ██ ▄█▄█▄▄█▀▄▀ ▄▀ ▄█▀
▀ ▀██▄█ ▀ █▀ ▀▄▀▀█ ▄█▀ ▄ ▀█
▀▄▄▄▀█▄▄▄▀▄▀▄▄▀█ █▄ ▄ ▄█ ▀
▄▀▀▄▄▀▄ ▀▄ ███▄ ▄ ▀█▄ ▀▄
▄█ ▀▄▄ ▄▀▄▀ ▄ ▄█▀█▄▄▄████ █
▄▄▄▄▄▄▄ ▀█ ▄ ██ ██ ▄ █ ██▀
█ ▄▄▄ █ █▄█▀▀ █ ▄▀ █▄▄▄██▄▄▄
█ ███ █ ██ ▀▄▀█▀██▄█ ▀ ▄▀█▀ █
█▄▄▄▄▄█ █▄ ▄▀▀ ▀▄ ▀▀█▀▀ █▀ █

View file

@ -1,65 +0,0 @@
Service: git
Owner: j3s@c3f.net
Updated: 1582677189
Cgit is an internal service used by many members of
Cyberia for version control purposes. It also serves as a
source of truth for many of our records. We use
https://git.zx2c4.com/cgit by Jason Donenfeld with a
custom CSS theme.
== Quickstart
Click "Git" on your navigation bar. :)
== How-Tos
> When I clone a repository, which URL should I use?
There are two URLs, and they serve different purposes.
-> git@ is a read-write URL.
-> https:// is a read-only URL.
> How do I make a new repository?
Login to gibson and issue the mkrepo command.
-> ssh gibson.cyberia.club -p 3215
-> sudo -u git mkrepo folder/reponame
================
== Resources ==
================
Philosophy
==========
Git is meant to be straightforward, and we use it as
intended. A simple remote repository, with no frills,
that hosts our code and gives us a space to collaborate.
We submit patches via mailing list - this gives us a
universal code delta (git + a diff) over a universal
medium (email).
currently, patches should be sent to `misc@c3f.net`.
Is the server backed up?
========================
Yeah, all of git is backed up many times per day to a
redundant ZFS volume.
How do I see files?
===================
Go to a repo and click `tree`.
================
== Changelog ==
================
- 2020-01-31: cgit was moved to a new URL (from
git.cyberia.club to cyberia.club/cgit)
- 2020-02-25: cgit was moved back to its'
original URL

View file

@ -1,13 +0,0 @@
#!/bin/sh -e
doc="${1?Please enter your docname}"
cat > "$doc.txt" <<EOF
Service: $1
Owner: misc@c3f.net
Updated: $(date +%s)
EOF
entry="- <a href=/docs/$doc>$1</a>"
echo "$entry" | tee -a ../docs.txt

View file

@ -1,7 +0,0 @@
Service: mumble
Owner: fack
Updated: 1584490184
mumble.cyberia.club
default port

View file

@ -1,9 +0,0 @@
+-------------------------------------------------------+
| Requesting a reimbursement from the treasurer |
+-------------------------------------------------------+
Page has been moved! Chase that 💰💰💰💵🤑💎💰💰💰 to
the <a href="https://matrix.to/#/#treasury:cyberia.club"> treasury</a>!

View file

@ -1,46 +0,0 @@
+-------------------------------------------------------+
| |
| STYLE |
| |
| * This document is a style guide |
| * This document is managed by the design branch |
| |
| |
+-------------------------------------------------------+
+-------------------------------------------------------+
| |
| COLORS |
| |
| cyberia has a cyberpunk aesthetic |
| these are the colors you're looking for |
| |
| [0000] |
| |
| +----------------------+ |
| | color | hex | |
| |----------------------| |
| | red | #a54242 | |
| | | #cc6666 | |
| | blue | #4a2842 | |
| | | #81a2be | |
| | cyan | #5e8d87 | |
| | | #b62c3e | |
| | black | #443558 | |
| | | #a92d4e | |
| | green | #85678f | |
| | | #b5bd68 | |
| | white | #707880 | |
| | | #c5c8c6 | |
| | yellow | #5bf29e | |
| | | #c3253d | |
| | magenta | #85678f | |
| | | #b294bb | |
| | background | #241e1e | |
| | foreground | #ffff9b | |
| +----------------------+ |
| |
| * colors from: https://github.com/tudurom/dotfiles |
| |
| |
+-------------------------------------------------------+

View file

@ -1,5 +0,0 @@
Service: tor
Owner: fack
Updated: 1584490207
<a href="https://metrics.torproject.org/rs.html#details/1C15FD234C93B65BE0C96C19F7B774FADA339569">our relay</a>

View file

@ -1,29 +0,0 @@
MONERO
Learn about Monero: https://getmonero.org
Cyberia Monero Wallet Address:
89Cb8FnjEXS2GaNLecdVBfQYaKJLk3qAENUdYFNhXWw2J5DQ8Kaukb9CHqZdi2mBiveAgfEacCBgeioqp7cBWAiJ8beK7SH
Cyberia Monero Wallet QR code:
█▀▀▀▀▀█ ▄█ ▄▄▀ ▄█▄▀▀██ ▀ ▄██ █▀▀▀▀▀█
█ ███ █ ▄█▀█ ██ ▄ ▀███ ██ █ ███ █
█ ▀▀▀ █ ▄ █ ▀█ ██▄▀ ███ ▄█▄██ █ ▀▀▀ █
▀▀▀▀▀▀▀ ▀ ▀ █ ▀ █ █ █▄█ █ ▀▄▀ ▀▀▀▀▀▀▀
██▀▀▀▄▀▀█▀▀ ▀█▄██ ▄▄▄ ▀█▄ █▀█▀ █ ▀ ▀▄
█▀█▄▀ ▀▄▄ ▀█▀ ▀ ▄▄▄▄ ▄ █▀▀▀█▀▀▀▀▀█
▀▀ █▀█▄▄▄▀▄▀▀█▄▀▄▄█▄▀ ▀▀▀▀██▄▀▀█▄
██▄▄▄ ▀ ██ ▄▀ ▀▀ ▀ ▀▄ ▀ ▀▀▀▀▀█ ▀▀ ▀
█ █ ▀▀▀▄▀▀ ▀▀▀▀▄▀▄█▄ ▄ ▀▄█ ▄▀█▄▀██ ▀
█ ▄ ▄ ▀█▀▀▄█▀ █▀█▀▀▄ █▄ ▄█▄ ▀▄▄▀▀█▀
█▄█ ▀ █ ▀▀▄▄▀▀▀ ▄ ▄█▀▄▄ ▀▄▄▀▀▄ ▀ █
█▄▀█▄█▀ █▀ ▄▀▄█ ▀▀ █▄▄▄█▀▀▀ ▀▀▄█ ██
▄ ▄▀██▀█▄█ ▀▀▄▀█ ▄█▄▀▀▀▀▄▀▄▄██▄ ▄▄▄
█ ▄ ▄▀ █ █▀▀██▀▀█▄ █ ▄█▀▀▀▀▄█▀ ▀ █
▀ ▀▀▀▀▀▀██ ▀▄ █▀█▀▄▄▀▄█▄▄█▀▄█▀▀▀█▄ ▄
█▀▀▀▀▀█ ▀▄█ ▄▀▄▀█▀ ▀█▄▄ ▀█ ▀ █▄▀▄▀
█ ███ █ █ ▀ ▀▄▀ ▄▀▄█▄▀█▄ ▄█▀▀██▀█▄▀█▄
█ ▀▀▀ █ █▄▀█▀ █▀ ▄▄ ▄ █▄▀▀█▄▀▀▀█
▀▀▀▀▀▀▀ ▀ ▀▀ ▀ ▀ ▀ ▀▀▀ ▀ ▀▀

96
site/donate.md Normal file
View file

@ -0,0 +1,96 @@
# DONATE
* You can support Cyberia's vision by sending a donation our way
* We reserve the right to reject and return donations
* If you would like to be publicly acknowledged for your donation please let us know!
Email: treasurer@cyberia.club
## LIBERAPAY
<p class="center">(cc processor: Stripe)</p>
<div class="nopre">
<a class="liberapay-btn" href="https://liberapay.com/CyberiaComputerClub/donate">
<svg viewBox="0 0 80 80" height="16" width="16">
<g transform="translate(-78.37-208.06)" fill="#1a171b">
<path d="m104.28 271.1c-3.571 0-6.373-.466-8.41-1.396-2.037-.93-3.495-2.199-4.375-3.809-.88-1.609-1.308-3.457-1.282-5.544.025-2.086.313-4.311.868-6.675l9.579-40.05 11.69-1.81-10.484 43.44c-.202.905-.314 1.735-.339 2.489-.026.754.113 1.421.415 1.999.302.579.817 1.044 1.546 1.395.729.353 1.747.579 3.055.679l-2.263 9.278"></path><path d="m146.52 246.14c0 3.671-.604 7.03-1.811 10.07-1.207 3.043-2.879 5.669-5.01 7.881-2.138 2.213-4.702 3.935-7.693 5.167-2.992 1.231-6.248 1.848-9.767 1.848-1.71 0-3.42-.151-5.129-.453l-3.394 13.651h-11.162l12.52-52.19c2.01-.603 4.311-1.143 6.901-1.622 2.589-.477 5.393-.716 8.41-.716 2.815 0 5.242.428 7.278 1.282 2.037.855 3.708 2.024 5.02 3.507 1.307 1.484 2.274 3.219 2.904 5.205.627 1.987.942 4.11.942 6.373m-27.378 15.461c.854.202 1.91.302 3.167.302 1.961 0 3.746-.364 5.355-1.094 1.609-.728 2.979-1.747 4.111-3.055 1.131-1.307 2.01-2.877 2.64-4.714.628-1.835.943-3.858.943-6.071 0-2.161-.479-3.998-1.433-5.506-.956-1.508-2.615-2.263-4.978-2.263-1.61 0-3.118.151-4.525.453l-5.28 21.948"></path>
</g>
</svg>
<span>Donate</span>
</a>
</div>
## CRYPTOCURRENCY
<p class="center">Via our BTCPay server</p>
<form class="btcpay-form nopre" method="POST" action="https://btcpay.cyberia.club/api/v1/invoices">
<input type="hidden" name="storeId" value="Bo4cE7iFU8EssMY4DRXUNtr1fjHXgCPCHA9uaaWWbaNr" />
<input type="hidden" name="checkoutDesc" value="donation" />
<div class="btcpay-custom-container">
<div class="btcpay-custom">
<input id="btcpay-input-price" name="price" type="text" min="0.00000001" max="1000" step="1" value="10" style="width: 2em;" oninput="event.preventDefault();isNaN(event.target.value) || event.target.value <= 0 ? document.querySelector('#btcpay-input-price').value = 10 : event.target.value">
</div>
<select name="currency">
<option value="USD" selected>USD</option>
<option value="GBP">GBP</option>
<option value="EUR">EUR</option>
<option value="BTC">BTC</option>
</select>
<input type="submit" class="submit" name="submit" value="Donate ->">
</div>
</form>
Unfortunately we cannot accept cryptocurrency donations valued at more than $1,000 USD
<details>
<summary>Direct crypto donation</summary>
<h3>Bitcoin</h3>
<p>bc1qhrh4lz88cexh3vxqt54l30a9f0gah73gxwfswf</p>
<pre role="presentation" aria-label="Bitcoin Wallet QR code">
▄▄▄▄▄▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄▄▄▄▄▄▄
█ ▄▄▄ █ ▄██▀▀▄▀▄▀▀▀▄▄ █ ▄▄▄ █
█ ███ █ █▀▀▄█▀▀█▄▀ ▄█ █ ███ █
█▄▄▄▄▄█ ▄ █▀▄ █ ▄ █▀▄ █▄▄▄▄▄█
▄▄▄▄ ▄ ▄ █▄█ ▄▀ █ ▄▄▄ ▄▄▄ ▄
█▄▄█▀▀▄ █▄█▄█▄ ▄ ▀▀▀▀█▀▄▄▄▀
█▄▀██▀▄▀ ██ ▄█▄█▄▄█▀▄▀ ▄▀ ▄█▀
▀ ▀██▄█ ▀ █▀ ▀▄▀▀█ ▄█▀ ▄ ▀█
▀▄▄▄▀█▄▄▄▀▄▀▄▄▀█ █▄ ▄ ▄█ ▀
▄▀▀▄▄▀▄ ▀▄ ███▄ ▄ ▀█▄ ▀▄
▄█ ▀▄▄ ▄▀▄▀ ▄ ▄█▀█▄▄▄████ █
▄▄▄▄▄▄▄ ▀█ ▄ ██ ██ ▄ █ ██▀
█ ▄▄▄ █ █▄█▀▀ █ ▄▀ █▄▄▄██▄▄▄
█ ███ █ ██ ▀▄▀█▀██▄█ ▀ ▄▀█▀ █
█▄▄▄▄▄█ █▄ ▄▀▀ ▀▄ ▀▀█▀▀ █▀ █
</pre>
<h3>Monero</h3>
<p>89Cb8FnjEXS2GaNLecdVBfQYaKJLk3qAENUdYFNhXWw2J5DQ8Kaukb9CHqZdi2mBiveAgfEacCBgeioqp7cBWAiJ8beK7SH</p>
<pre role="presentation" aria-label="Monero Wallet QR code">
█▀▀▀▀▀█ ▄█ ▄▄▀ ▄█▄▀▀██ ▀ ▄██ █▀▀▀▀▀█
█ ███ █ ▄█▀█ ██ ▄ ▀███ ██ █ ███ █
█ ▀▀▀ █ ▄ █ ▀█ ██▄▀ ███ ▄█▄██ █ ▀▀▀ █
▀▀▀▀▀▀▀ ▀ ▀ █ ▀ █ █ █▄█ █ ▀▄▀ ▀▀▀▀▀▀▀
██▀▀▀▄▀▀█▀▀ ▀█▄██ ▄▄▄ ▀█▄ █▀█▀ █ ▀ ▀▄
█▀█▄▀ ▀▄▄ ▀█▀ ▀ ▄▄▄▄ ▄ █▀▀▀█▀▀▀▀▀█
▀▀ █▀█▄▄▄▀▄▀▀█▄▀▄▄█▄▀ ▀▀▀▀██▄▀▀█▄
██▄▄▄ ▀ ██ ▄▀ ▀▀ ▀ ▀▄ ▀ ▀▀▀▀▀█ ▀▀ ▀
█ █ ▀▀▀▄▀▀ ▀▀▀▀▄▀▄█▄ ▄ ▀▄█ ▄▀█▄▀██ ▀
█ ▄ ▄ ▀█▀▀▄█▀ █▀█▀▀▄ █▄ ▄█▄ ▀▄▄▀▀█▀
█▄█ ▀ █ ▀▀▄▄▀▀▀ ▄ ▄█▀▄▄ ▀▄▄▀▀▄ ▀ █
█▄▀█▄█▀ █▀ ▄▀▄█ ▀▀ █▄▄▄█▀▀▀ ▀▀▄█ ██
▄ ▄▀██▀█▄█ ▀▀▄▀█ ▄█▄▀▀▀▀▄▀▄▄██▄ ▄▄▄
█ ▄ ▄▀ █ █▀▀██▀▀█▄ █ ▄█▀▀▀▀▄█▀ ▀ █
▀ ▀▀▀▀▀▀██ ▀▄ █▀█▀▄▄▀▄█▄▄█▀▄█▀▀▀█▄ ▄
█▀▀▀▀▀█ ▀▄█ ▄▀▄▀█▀ ▀█▄▄ ▀█ ▀ █▄▀▄▀
█ ███ █ █ ▀ ▀▄▀ ▄▀▄█▄▀█▄ ▄█▀▀██▀█▄▀█▄
█ ▀▀▀ █ █▄▀█▀ █▀ ▄▄ ▄ █▄▀▀█▄▀▀▀█
▀▀▀▀▀▀▀ ▀ ▀▀ ▀ ▀ ▀ ▀▀▀ ▀ ▀▀
</pre>
</details>
## CASH or CHECK or BANK WIRE
* Email us: treasurer@cyberia.club

View file

@ -1,80 +0,0 @@
+-------------------------------------------------------+
| |
| DONATE |
| |
| * You can support furthering of Cyberia's principles |
| by sending a donation our way. |
| |
| * We reserve the right to reject and return donations |
| |
| * If you want to be publicly acknowledged for your |
| donation please let us know! |
| Email: treasurer@cyberia.club |
| |
+-------------------------------------------------------+
</pre></pre>
<pre>
Donate via liberapay (cc processor: stripe)
</pre>
<div>
<!--<script src="https://liberapay.com/cybertrez/widgets/button.js"></script>-->
<!-- liberapay is too slow to respond sometimes and a script does not seem needed here, -->
<!-- so i'm inlining this content for better or for worse -->
<a class="liberapay-btn" href="https://liberapay.com/CyberiaComputerClub/donate">
<svg viewBox="0 0 80 80" height="16" width="16">
<g transform="translate(-78.37-208.06)" fill="#1a171b">
<path d="m104.28 271.1c-3.571 0-6.373-.466-8.41-1.396-2.037-.93-3.495-2.199-4.375-3.809-.88-1.609-1.308-3.457-1.282-5.544.025-2.086.313-4.311.868-6.675l9.579-40.05 11.69-1.81-10.484 43.44c-.202.905-.314 1.735-.339 2.489-.026.754.113 1.421.415 1.999.302.579.817 1.044 1.546 1.395.729.353 1.747.579 3.055.679l-2.263 9.278"></path><path d="m146.52 246.14c0 3.671-.604 7.03-1.811 10.07-1.207 3.043-2.879 5.669-5.01 7.881-2.138 2.213-4.702 3.935-7.693 5.167-2.992 1.231-6.248 1.848-9.767 1.848-1.71 0-3.42-.151-5.129-.453l-3.394 13.651h-11.162l12.52-52.19c2.01-.603 4.311-1.143 6.901-1.622 2.589-.477 5.393-.716 8.41-.716 2.815 0 5.242.428 7.278 1.282 2.037.855 3.708 2.024 5.02 3.507 1.307 1.484 2.274 3.219 2.904 5.205.627 1.987.942 4.11.942 6.373m-27.378 15.461c.854.202 1.91.302 3.167.302 1.961 0 3.746-.364 5.355-1.094 1.609-.728 2.979-1.747 4.111-3.055 1.131-1.307 2.01-2.877 2.64-4.714.628-1.835.943-3.858.943-6.071 0-2.161-.479-3.998-1.433-5.506-.956-1.508-2.615-2.263-4.978-2.263-1.61 0-3.118.151-4.525.453l-5.28 21.948">
</path>
</g>
</svg>
<span>Donate</span>
</a>
</div>
<pre>
CRYPTOCURRENCY
</pre>
<pre>
Bitcoin, Litecoin, Monero
</pre>
<form method="POST" action="https://btcpay.cyberia.club/api/v1/invoices" class="btcpay-form">
<input type="hidden" name="storeId" value="Bo4cE7iFU8EssMY4DRXUNtr1fjHXgCPCHA9uaaWWbaNr" />
<input type="hidden" name="checkoutDesc" value="donation" />
<div class="btcpay-custom-container">
<div class="btcpay-custom">
<input id="btcpay-input-price" name="price" type="text" min="0.00000001" max="1000" step="1" value="10" style="width: 2em;" oninput="event.preventDefault();isNaN(event.target.value) || event.target.value <= 0 ? document.querySelector('#btcpay-input-price').value = 10 : event.target.value">
</div>
<select name="currency">
<option value="USD" selected>USD</option>
<option value="GBP">GBP</option>
<option value="EUR">EUR</option>
<option value="BTC">BTC</option>
</select>
<input type="submit" class="submit" name="submit" value="Donate Cryptocurrency">
</div>
</form>
<pre>
Unfortunately we cannot accept cryptocurrency
donations valued at more than $1,000 USD
<a href="https://cyberia.club/docs/btc">Learn more about Bitcoin</a>
<a href="https://cyberia.club/docs/xmr">Learn more about Monero</a>
</pre>
<pre><pre>
+-------------------------------------------------------+
| |
| CASH or CHECK or BANK WIRE |
| |
| * Email us: treasurer@cyberia.club |
| |
+-------------------------------------------------------+

3
site/failure.md Normal file
View file

@ -0,0 +1,3 @@
# PAYMENT FAILED
Stripe not working? email ops@cyberia.club

View file

@ -1,8 +0,0 @@
+-------------------------------------------------------+
| |
| PAYMENT FAILED |
| |
| |
| Stripe not working? email ops@cyberia.club |
| |
+-------------------------------------------------------+

55
site/index.md Normal file
View file

@ -0,0 +1,55 @@
# Cyberia Computer Club
A kind and amazing hacker collective centered in Minnesota, with global friends.
<pre aria-label="ASCII art of Iwakura Lain saying 'close the old world, open the next'">
_..--------.._
,-'' `-.
,' `.
, \
/ \
/ '. \
' / || ;
; n /| |/ | |
| / v /\/`-'vv\'.|\ ,
: /v`,--- ----.^. ;
' | / .`, , .`\| ;
| n| '.__/ \ ___/|\ ;
` | ` | \/|
\ \ \ | /\/
'; `-\ `' /|/ |'
` \ - /| |
` `. .' | |
v,_ `;._ _.-; | /
`'`\|-_`'-''__/^'^' | |
\-v-/ | |
cL0s3 th3 o1d w0rld | /
0p3n th3 n3xt ||
||
|,
</pre>
## WHAT DO?
- we hack
endlessly and mercilessly on anything
and everything. that router? hacked it.
how about that scooter? yep, hacked. old
sock? definitely hacked. bicycles? art?
music? hair? masks? we have no limits.
- we provide services
email, matrix, tor, vms, and moar?!
if you have a want, talk to us!
we are very helpful.
- we care about
simplicity, privacy, accessibility,
kindness, hacking, people, openness,
honesty, transparency,
and a lot more
- we move
against the grain of big business tech
against the leeches who stole all of the magic
against those who care for profit more than people
- help us close the old world and open the next

View file

@ -1,73 +0,0 @@
+-------------------------------------------------------+
| |
| Cyberia |
| |
| A kind and amazing hacker collective |
| centered in Minnesota, with global |
| friends. |
| |
+-------------------------------------------------------+
_..--------.._
,-'' `-.
,' `.
, \
/ \
/ '. \
' / || ;
; n /| |/ | |
| / v /\/`-'vv\'.|\ ,
: /v`,--- ----.^. ;
' | / .`, , .`\| ;
| n| '.__/ \ ___/|\ ;
` | ` | \/|
\ \ \ | /\/
'; `-\ `' /|/ |'
` \ - /| |
` `. .' | |
v,_ `;._ _.-; | /
`'`\|-_`'-''__/^'^' | |
\-v-/ | |
cL0s3 th3 w0rld | /
0p3n th3 n3xt ||
||
|,
+-------------------------------------------------------+
| |
| PANDEMICS AND PROTESTS |
| |
| mask on |
| tv off |
| stay safe |
| |
+-------------------------------------------------------+
WHAT DO?
--------
~ we hack
endlessly and mercilessly on anything
and everything. that router? hacked it.
how about that scooter? yep, hacked. old
sock? definitely hacked. bicycles? art?
music? hair? masks? we have no limits.
~ we provide services
email, matrix, tor, vms, and moar?!
if you have a want, talk to us!
we are very helpful.
~ we care about
simplicity, privacy, accessibility,
kindness, hacking, people, openness,
honesty, transparency,
and a lot more
~ we move
against the grain of big business tech
against the leeches who stole all of the magic
against those who care for profit more than people
~ help us close the old world and open the next

View file

@ -1,20 +0,0 @@
{
"@context" : "http://schema.org",
"version": "0.0.1",
"@type" : "Organization",
"organizationType" : "Nonprofit",
"name" : "Cyberia Computer Club",
"tagLine" : "",
"homeUrl" : "https://libreops.cc",
"logo" : "https://libreops.cc/static/img/libreops.svg",
"description": "",
"communicationLanguages": ["en"],
"contactUrl": "https://matrix.to/#/#services:cyberia.club",
"privacyPolicyUrl" : "https://git.cyberia.club/congress/privacy-policy/about",
"termsOfServiceUrl" : "https://git.cyberia.club/congress/terms-of-service/about",
"isServiceProvider" : true,
"foundingDate": "2019",
"dateCreated": "2020-06-11T16:48:34Z",
"dateModified": "2020-06-11T16:48:34Z"
}

27
site/matrix.md Normal file
View file

@ -0,0 +1,27 @@
# MATRIX
Cyberia runs a Matrix server. Matrix is a lot like Discord, except it's 100% free and always will be. We run Matrix on our own servers, so your data doesn't rest in the hands of big money tech interests.
Web Client (you probably want this):
https://chat.cyberia.club
Homeserver URL:
https://matrix.cyberia.club
## THIS IS COOL CAN I SIGN UP PLS?
To help keep spam down, we have a manual account review process. Could you tell us a little about yourself?
We are trying to build a kind & earnest community focused around a mutual love for computers and a welcoming respect for everyone.
However we usually only create accounts for folks who want to participate in our channels. Please send an email to ops@cyberia.club with:
- your requested username
- a description of why you're interested in joining our community
---------------------------------------------
Once your account is created you can log in with the matrix client of your choice, or use our web-based client: https://chat.cyberia.club/
More docs: https://wiki.cyberia.club/hypha/services/matrix

View file

@ -1,47 +0,0 @@
+---------------------------------------------+
| |
| MATRIX |
| |
+---------------------------------------------+
Cyberia runs a Matrix server. Matrix is a lot
like Discord, except it's 100% free and always
will be. We run Matrix on our own servers, so
your data doesn't rest in the hands of big
money tech interests.
Web Client (you probably want this):
https://chat.cyberia.club
Homeserver URL:
https://matrix.cyberia.club
THIS IS COOL CAN I SIGN UP PLS?
To help keep spam down, we have a manual
account review process. Could you tell us
a little about yourself?
We are trying to build a kind & earnest
community focused around a mutual love for
computers and a welcoming respect for everyone.
However we usually only create accounts for
folks who want to participate in our channels.
Please send an email to ops@cyberia.club.
with:
[requested username]
[description of why you're
interested in joining our community]
---------------------------------------------
Once your account is created you can log in
with the matrix client of your choice, or use
our web-based client: https://chat.cyberia.club/
More docs: https://wiki.cyberia.club/hypha/services/matrix

7
site/mumble.md Normal file
View file

@ -0,0 +1,7 @@
# MUMBLE
Mumble is an open source, low-latency, high quality voice chat software. It's useful for conferencing, gaming, or general chatting.
our server: mumble.cyberia.club, default port
download mumble: https://www.mumble.info/downloads/

View file

@ -1,13 +0,0 @@
+-------------------------------------------------------+
| |
| MUMBLE |
| |
+-------------------------------------------------------+
Mumble is an open source, low-latency, high quality voice
chat software. It's useful for conferencing, gaming, or
general chatting
server: mumble.cyberia.club, default port
download mumble:
https://www.mumble.info/downloads/

View file

@ -1,69 +0,0 @@
+-------------------------------------------------------+
| |
| CYBERIA ORCA JAM CONTEST |
| |
+-------------------------------------------------------+
+-------------------------------------------------------+
| |
| WAT? |
| |
| we're running a smol music contest utilizing orca[1]! |
| |
| orca is a livecoding environment for music production.|
| this contest is meant to serve as an intro to this |
| awesome tool! |
| |
+-------------------------------------------------------+
+-------------------------------------------------------+
| |
| WHEN? |
| |
| Saturday, March 13th 2021 |
| Demos start at 1800 CST / 0000 UTC on mumble! |
| |
+-------------------------------------------------------+
+-------------------------------------------------------+
| |
| RULES |
| |
| * music must be produced using orca |
| * music must be produced on the day of the contest |
| * music must be submitted to #musicollab:cyberia.club |
| |
| * all entries will be streamed at stream.cyberia.club |
| * entries will be voted on, winner gets a cute prize! |
| * no registration required, just show up on jam day! |
| |
+-------------------------------------------------------+
+-------------------------------------------------------+
| |
| RESOURCES |
| |
| SOFTWARE - installing orca |
| |
| orca js: https://github.com/hundredrabbits/Orca |
| pilot: https://github.com/hundredrabbits/Pilot |
| |
| MISC SOFTWARE - orca in other ways |
| |
| orca C: https://git.sr.ht/~rabbits/orca |
| |
| LEARNING - how do i use orca? |
| |
| j3s tutorial: https://trash.j3s.sh/orca-setup.mkv |
| symys tutorial: https://youtu.be/rD1_TurZvK8 |
| learn orca: https://metasyn.github.io/learn-orca |
| |
| SAMPLES - see orca in action! |
| |
| tutorial: https://www.youtube.com/watch?v=ktcWOLeWP-g |
| sample: https://www.youtube.com/watch?v=jLhijF5swqk |
| sample: https://www.youtube.com/watch?v=1h7vQFH9xFM |
| PONG: https://www.youtube.com/watch?v=N-CzNpa5Apk |
| |
+-------------------------------------------------------+

25
site/success.md Normal file
View file

@ -0,0 +1,25 @@
# SUCCESS
## THANK YOU FOR DONATING!
<pre role="presentation" aria-label="ASCII art of a fairy with sparkly emojis floating around them">
__ __ .--.
( ""--__( ""-_ ,' .-.\ 🌟
"-_ __ ""--__ "-_( (^_^)) /
( """--___""--__" )-'( / ✨
"-__ ""---/ ,(., )__o-/,
"""----___(.'. /--"--'
("-_"/( /
\ \ \
`. \ |
\ \/
✨ || \
,-'/`. \
) / ) \ ✨
|/ `-.\
`\
🍃
</pre>
<p class="center small">art credit: <a href="https://www.asciiart.eu/mythology/fairies">Ojo '98</a></p>
* If you have any questions regarding your donation, email ops@cyberia.club

View file

@ -1,29 +0,0 @@
+-------------------------------------------------------+
| |
| SUCCESS. THANK YOU FOR DONATING! |
| |
| |
| __ __ .--. |
| ( ""--__( ""-_ ,' .-.\ <span style="width:0;height: 0;position: relative;display: inline-block;">🌟</span> |
| "-_ __ ""--__ "-_( (^_^)) / |
| ( """--___""--_)" )-'( / <span style="width:0;height: 0;position: relative;display: inline-block;">✨</span> |
| "-__ ""---) -( )__o-/, |
| """----___ / ' /--"--' |
| ("-_,`( / |
| \ \ \ |
| `. \ | |
| \ \/ |
| <span style="width:0;height: 0;position: relative;display: inline-block;">✨</span> || \ |
| ,-'/`. \ <span style="width:0;height: 0;position: relative;display: inline-block;">✨</span> |
| ) / ) \ |
| |/ `-.\ |
| <span style="width:0;height: 0;position: relative;display: inline-block;">🍃</span> `\ |
| |
| |
| * Art credit: Ojo '98 |
| -- https://www.asciiart.eu/mythology/fairies |
| |
| * If you have any questions regarding your donation, |
| email ops@cyberia.club |
| |
+-------------------------------------------------------+

View file

@ -0,0 +1 @@
{"m.server": "matrix.cyberia.club"}

View file

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

202
static/cyberia.css Normal file
View file

@ -0,0 +1,202 @@
/* layout */
html, body {
color: #bdc7b8;
font-size: calc(7px + 1vmin);
font-family: monospace;
text-align: center;
background-color: #241e1e;
}
nav, main, footer {
margin: 2em auto;
}
nav a {
display: inline-block;
margin: 0.4em;
}
main, footer {
max-width: 512px;
white-space: pre-wrap;
}
.nopre {
white-space: normal !important;
}
main > pre {
display: inline-block;
margin: 1em auto;
text-align: left;
}
footer {
display: inline-block;
text-align: left;
}
/* style classes */
.center { text-align: center; }
.bold { font-weight: bold; }
.italic { font-style: italic; }
.small { font-size: 0.85em; }
/* generic */
h1, h2 {
margin-bottom: 0;
text-align: center;
}
h3, h4, h5, h6 {
margin-bottom: 0;
text-align: left;
}
p, ul {
text-align: left;
margin: 0;
}
a.external::after {
content: '->';
display: inline;
}
a:link {
color: #6CF;
}
a:hover, a:active, a:visited {
color: #b5bd68;
}
img {
display: block;
height: auto;
width: 100%;
max-width: 100%;
}
ul {
list-style: none;
margin-left: 0;
padding-left: 1em;
}
li {
padding-left: 1em;
text-indent: -1em;
}
li:before {
content: "~";
display: inline-block;
width: 1em;
}
table, th, td {
border: 1px dashed #bdc7b8;
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
padding: 0.5em;
}
th {
text-align: center;
}
td {
text-align: left;
}
/* Donation widgets */
/* css from https://liberapay.com/cybertrez/widgets/button.js, see donate.md */
html > body .liberapay-btn {
background-color: #f6c915;
border-radius: 4px;
color: #1a171b;
display: inline-block;
font-family: Helvetica Neue,Helvetica,sans-serif;
font-size: 14px;
font-weight: 700;
line-height: 22px;
padding: 5px 7px 3px;
position: relative;
text-decoration: none;
}
html > body .liberapay-btn:hover {
background-color: #fbce1a;
}
.liberapay-btn > svg {
position: absolute;
left: 7px;
top: 7px;
}
.liberapay-btn > span {
margin-left: 19px;
}
.btcpay-form { flex-direction: row; } .btcpay-form--block { flex-direction: column; }
.btcpay-form .submit {
margin-left: 15px;
padding: 4px 10px;
font-size: 17px;
font-weight: bold;
font: 1.1rem monospace;
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
background: transparent;
border-radius: 3px;
border:1px solid transparent;
color: #bdc7b8;
}
.btcpay-form--block select {
margin-bottom: 10px;
}
.btcpay-form .btcpay-custom-container {
display: inline-flex; align-items: center; justify-content: center; flex-direction: row;
}
.btcpay-custom {
display: flex;
align-items: center;
justify-content: center;
}
.btcpay-form select {
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
background: transparent;
border:1px solid transparent;
display: block;
border-radius: 3px;
border-left: 0;
padding: 1px;
margin-left: 2px;
margin-right: auto;
font-size: 19px;
cursor: pointer;
font: 1.1rem monospace;
color: #bdc7b8;
}
#btcpay-input-price { -moz-appearance: none; -webkit-appearance: none;
border: none;
box-shadow: none;
text-align: center;
font-size: 24px;
margin: auto;
border-radius: 3px;
padding: 4px;
background: transparent;
border:1px solid transparent;
font: 1.1rem monospace;
color: #bdc7b8;
}
.btcpay-form select,
#btcpay-input-price,
.btcpay-form .submit {
border-color: #bdc7b8;
}
#btcpay-input-price::-webkit-outer-spin-button {
-webkit-appearance: none; margin: 0;
}

10
static/cyberia.svg Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="600" height="600" viewBox="0 0 600 600" version="1.1" id="svg31165" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" sodipodi:docname="cyberia.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview id="namedview31167" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:document-units="px" showgrid="false" inkscape:zoom="1.8348087" inkscape:cx="319.37934" inkscape:cy="266.24029" inkscape:window-width="1920" inkscape:window-height="1018" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="layer1" inkscape:showpageshadow="0" inkscape:deskcolor="#d1d1d1"/>
<defs id="defs31162"/>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1">
<path id="rect1039" clip-path="none" style="font-variation-settings:normal;display:inline;opacity:1;vector-effect:none;fill:#79cfdc;fill-opacity:1;stroke-width:0.541505;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;paint-order:stroke fill markers;stop-color:#000000;stop-opacity:1" d="M 300,0 A 300,300 0 0 0 0,300 300,300 0 0 0 70.759766,492 H 529.24024 A 300,300 0 0 0 600,300 300,300 0 0 0 300,0 Z M 85.039058,508 a 300,300 0 0 0 20.806652,20 H 494.1543 a 300,300 0 0 0 20.80664,-20 z m 40.878912,36 a 300,300 0 0 0 31.95899,20 h 284.24609 a 300,300 0 0 0 31.95898,-20 z m 66.57813,36 A 300,300 0 0 0 300,600 300,300 0 0 0 407.50391,580 Z"/>
<path id="path3110" clip-path="none" style="font-variation-settings:normal;display:inline;opacity:1;vector-effect:none;fill:#a97cb7;fill-opacity:1;fill-rule:evenodd;stroke-width:0.541505;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" d="M 300,0 A 300,300 0 0 0 0,300 300,300 0 0 0 16.066406,393.50391 c 42.130453,-10.5903 73.537862,-41.95397 79.496092,-81.33984 6.695032,-44.25631 8.968622,-81.05919 36.824222,-104.56055 27.8556,-23.50136 67.52235,-5.27746 81.72852,21.57031 14.20615,26.84778 26.92466,60.31494 61.27734,61.70899 34.35268,1.39405 62.70861,-43.8662 74.15625,-74.36328 11.44764,-30.49708 47.69834,-47.77307 72.26758,-34.63477 24.56923,13.1383 34.67223,40.38966 49.53125,70.99414 14.85901,30.60448 33.60932,61.00834 56.67187,81.03906 19.37272,16.82595 40.73829,33.64697 60.72071,45.19727 A 300,300 0 0 0 600,300 300,300 0 0 0 300,0 Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

20
static/librehost.json Normal file
View file

@ -0,0 +1,20 @@
{
"@context": "http://schema.org",
"version": "0.0.1",
"@type": "Organization",
"organizationType": "Nonprofit",
"name": "Cyberia Computer Club",
"tagLine": "close the old world. open the next.",
"homeUrl": "https://cyberia.club",
"logo": "https://cyberia.club/logo.svg",
"description": "A kind and amazing hacker collective centered in Minnesota, with global friends.",
"communicationLanguages": ["en"],
"contactUrl": "https://matrix.to/#/#services:cyberia.club",
"privacyPolicyUrl": "https://git.cyberia.club/congress/privacy-policy/about",
"termsOfServiceUrl": "https://git.cyberia.club/congress/terms-of-service/about",
"isServiceProvider": true,
"foundingDate": "2019",
"dateCreated": "2020-06-11T16:48:34Z",
"dateModified": "2024-02-02T03:25:52Z"
}

View file

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

35
template.html Executable file
View file

@ -0,0 +1,35 @@
<!doctype html>
<html lang="en">
<head>
<title>Cyberia Computer Club</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="Description" content="Cyberia Computer Club">
<link rel="stylesheet" href="/cyberia.css">
<link rel="icon" href="/favicon.ico">
</head>
<body>
<nav>
<a href="/">Cyberia</a>
<a href="/culture">Culture</a>
<a href="https://blog.cyberia.club/read">Blog</a>
<a href="/calendar">Calendar</a>
<a href="/donate">Donate</a>
<a href="/matrix">Matrix (Chat)</a>
<a href="/mumble">Mumble</a>
<br>
<a class="external" href="https://capsul.org">Capsul</a>
<a class="external" href="https://nullhex.com">Nullhex</a>
<a class="external" href="https://git.cyberia.club">Git</a>
<a class="external" href="https://wiki.cyberia.club">Wiki</a>
<a class="external" href="https://stream.cyberia.club">Stream</a>
</nav>
<main>%%CONTENT%%</main>
<footer>(c) Attribution-ShareAlike 4.0 International
Cyberia Computer Club 2020-∞</footer>
</body>
</html>