forked from cccb-website-team/www
Compare commits
32 changed files with 310 additions and 476 deletions
|
|
@ -9,6 +9,11 @@ charset = utf-8
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
||||||
[*.{js,yaml}]
|
[*.py]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.yaml]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
name: deploy blog
|
name: deploy blog
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
|
||||||
- cron: '0 10 * * *' # daily at 10:00
|
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- staging
|
- staging
|
||||||
|
|
@ -11,44 +8,46 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: alpine-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: apk --no-cache add hugo git openssh-client rsync
|
run: apk --no-cache add hugo python3 py3-pip git openssh-client rsync
|
||||||
|
|
||||||
- name: Check versions
|
- name: Check versions
|
||||||
run: |
|
run: |
|
||||||
cat /etc/os-release
|
cat /etc/os-release
|
||||||
git version
|
git version
|
||||||
hugo version
|
hugo version
|
||||||
rsync --version
|
python --version
|
||||||
ssh -V
|
|
||||||
|
|
||||||
- name: Set envionment vars
|
|
||||||
run: echo "GIT_BRANCH=${{ forgejo.event_name == 'schedule' && 'production' || forgejo.ref_name }}" >> "$FORGEJO_ENV"
|
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
run: |
|
run: |
|
||||||
git clone -b $GIT_BRANCH --recursive https://git.berlin.ccc.de/cccb-website-team/www.git .
|
git clone -b ${{ forgejo.ref_name }} --recursive https://git.berlin.ccc.de/cccb-website-team/www.git .
|
||||||
git status
|
git status
|
||||||
|
|
||||||
|
- name: Install Python depenndencies
|
||||||
|
run: python -m pip install -r requirements.txt --break-system-packages
|
||||||
|
|
||||||
- name: Render site
|
- name: Render site
|
||||||
run: ./build.sh
|
run: ./build.sh
|
||||||
|
|
||||||
- name: Setup SSH
|
- name: Setup SSH
|
||||||
|
env:
|
||||||
|
SSH_PRIVATE_KEY: ${{ forgejo.ref_name == 'production' && secrets.SSH_PRIVATE_KEY_PRODUCTION || secrets.SSH_PRIVATE_KEY_STAGING }}
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
printf "%s" "${{ secrets.KNOWN_HOSTS }}" | base64 -d > ~/.ssh/known_hosts
|
printf "%s" "${{ secrets.KNOWN_HOSTS }}" | base64 -d > ~/.ssh/known_hosts
|
||||||
printf "%s" "${{ env.GIT_BRANCH == 'production' && secrets.SSH_PRIVATE_KEY_PRODUCTION || secrets.SSH_PRIVATE_KEY_STAGING }}" | base64 -d > ~/.ssh/id_ed25519
|
printf "%s" "$SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/id_ed25519
|
||||||
chmod 600 ~/.ssh/id_ed25519
|
chmod 600 ~/.ssh/id_ed25519
|
||||||
ssh-keygen -f ~/.ssh/id_ed25519 -y > ~/.ssh/id_ed25519.pub
|
ssh-keygen -f ~/.ssh/id_ed25519 -y > ~/.ssh/id_ed25519.pub
|
||||||
cat ~/.ssh/id_ed25519.pub
|
cat ~/.ssh/id_ed25519.pub
|
||||||
|
|
||||||
- name: Rsync rendered site
|
- name: Rsync rendered site
|
||||||
|
env:
|
||||||
|
DEPLOY_DIR: ${{ forgejo.ref_name == 'production' && '/srv/http/www/' || '/srv/http/www-staging/' }}
|
||||||
# TODO: add --delete
|
# TODO: add --delete
|
||||||
run: rsync -var -e 'ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes' ./public/ deploy@www.berlin.ccc.de:${{ env.GIT_BRANCH == 'production' && '/srv/http/www/' || '/srv/http/www-staging/' }}
|
run: rsync -var -e 'ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes' ./public/ deploy@www.berlin.ccc.de:$DEPLOY_DIR
|
||||||
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
run: rm -rf ~/.ssh
|
run: rm -rf ~/.ssh
|
||||||
|
|
||||||
|
|
|
||||||
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
*.ics text eol=crlf
|
||||||
133
.gitignore
vendored
133
.gitignore
vendored
|
|
@ -1,9 +1,8 @@
|
||||||
# Created by https://www.toptal.com/developers/gitignore/api/windows,linux,macos,hugo,pycharm+all,vim,direnv
|
static/all.ics
|
||||||
# Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,macos,hugo,pycharm+all,vim,direnv
|
|
||||||
|
|
||||||
### direnv ###
|
|
||||||
.direnv
|
|
||||||
.envrc
|
.envrc
|
||||||
|
*.swp
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/windows,linux,macos,hugo
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,macos,hugo
|
||||||
|
|
||||||
### Hugo ###
|
### Hugo ###
|
||||||
# Generated files by hugo
|
# Generated files by hugo
|
||||||
|
|
@ -44,6 +43,7 @@ hugo.linux
|
||||||
# Icon must end with two \r
|
# Icon must end with two \r
|
||||||
Icon
|
Icon
|
||||||
|
|
||||||
|
|
||||||
# Thumbnails
|
# Thumbnails
|
||||||
._*
|
._*
|
||||||
|
|
||||||
|
|
@ -67,114 +67,6 @@ Temporary Items
|
||||||
# iCloud generated files
|
# iCloud generated files
|
||||||
*.icloud
|
*.icloud
|
||||||
|
|
||||||
### PyCharm+all ###
|
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
|
||||||
.idea/**/workspace.xml
|
|
||||||
.idea/**/tasks.xml
|
|
||||||
.idea/**/usage.statistics.xml
|
|
||||||
.idea/**/dictionaries
|
|
||||||
.idea/**/shelf
|
|
||||||
|
|
||||||
# AWS User-specific
|
|
||||||
.idea/**/aws.xml
|
|
||||||
|
|
||||||
# Generated files
|
|
||||||
.idea/**/contentModel.xml
|
|
||||||
|
|
||||||
# Sensitive or high-churn files
|
|
||||||
.idea/**/dataSources/
|
|
||||||
.idea/**/dataSources.ids
|
|
||||||
.idea/**/dataSources.local.xml
|
|
||||||
.idea/**/sqlDataSources.xml
|
|
||||||
.idea/**/dynamic.xml
|
|
||||||
.idea/**/uiDesigner.xml
|
|
||||||
.idea/**/dbnavigator.xml
|
|
||||||
|
|
||||||
# Gradle
|
|
||||||
.idea/**/gradle.xml
|
|
||||||
.idea/**/libraries
|
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
|
||||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
||||||
# since they will be recreated, and may cause churn. Uncomment if using
|
|
||||||
# auto-import.
|
|
||||||
# .idea/artifacts
|
|
||||||
# .idea/compiler.xml
|
|
||||||
# .idea/jarRepositories.xml
|
|
||||||
# .idea/modules.xml
|
|
||||||
# .idea/*.iml
|
|
||||||
# .idea/modules
|
|
||||||
# *.iml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
|
||||||
.idea/**/mongoSettings.xml
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
|
||||||
.idea_modules/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
.idea/replstate.xml
|
|
||||||
|
|
||||||
# SonarLint plugin
|
|
||||||
.idea/sonarlint/
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
### PyCharm+all Patch ###
|
|
||||||
# Ignore everything but code style settings and run configurations
|
|
||||||
# that are supposed to be shared within teams.
|
|
||||||
|
|
||||||
.idea/*
|
|
||||||
|
|
||||||
!.idea/codeStyles
|
|
||||||
!.idea/runConfigurations
|
|
||||||
|
|
||||||
### Vim ###
|
|
||||||
# Swap
|
|
||||||
[._]*.s[a-v][a-z]
|
|
||||||
!*.svg # comment out if you don't need vector files
|
|
||||||
[._]*.sw[a-p]
|
|
||||||
[._]s[a-rt-v][a-z]
|
|
||||||
[._]ss[a-gi-z]
|
|
||||||
[._]sw[a-p]
|
|
||||||
|
|
||||||
# Session
|
|
||||||
Session.vim
|
|
||||||
Sessionx.vim
|
|
||||||
|
|
||||||
# Temporary
|
|
||||||
.netrwhist
|
|
||||||
# Auto-generated tag files
|
|
||||||
tags
|
|
||||||
# Persistent undo
|
|
||||||
[._]*.un~
|
|
||||||
|
|
||||||
### Windows ###
|
### Windows ###
|
||||||
# Windows thumbnail cache files
|
# Windows thumbnail cache files
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
@ -201,4 +93,17 @@ $RECYCLE.BIN/
|
||||||
# Windows shortcuts
|
# Windows shortcuts
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,hugo,pycharm+all,vim,direnv
|
# End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,hugo
|
||||||
|
|
||||||
|
# NixOS:
|
||||||
|
.envrc
|
||||||
|
shell.nix
|
||||||
|
.direnv
|
||||||
|
|
||||||
|
# Python
|
||||||
|
.venv
|
||||||
|
|
||||||
|
# murmeldin
|
||||||
|
overview.md
|
||||||
|
|
||||||
|
/result
|
||||||
|
|
|
||||||
1
.python-version
Normal file
1
.python-version
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
3.11
|
||||||
28
README.md
28
README.md
|
|
@ -27,20 +27,10 @@ This is the website of the CCCB.
|
||||||
|
|
||||||
5. Point your browser to: <http://localhost:1313/>
|
5. Point your browser to: <http://localhost:1313/>
|
||||||
|
|
||||||
Every change you make on the project will be reflected in your browser as long as `hugo serve` is running.
|
To ready your site for upload, run `./build.sh`, which also generates `all.ics`
|
||||||
|
and adds the calendar table to `index.html`.
|
||||||
The *"Nächste Veranstaltungen"* table on the home page is generated by post-processing in `./build.sh`, not by Hugo, so
|
Every change you make on the project will be reflected in your browser
|
||||||
it is **not** visible under `hugo serve`. To preview the fully built site (including the home-page calendar), or to
|
as long as `hugo serve` is running.
|
||||||
ready the site for upload, run:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
./build.sh
|
|
||||||
python3 -m http.server -d public 1313
|
|
||||||
```
|
|
||||||
|
|
||||||
`build.sh` replaces the `CALENDAR` placeholder in `index.html` with the upcoming-events table. It depends on Python
|
|
||||||
with the `icalendar`, `python-dateutil`, and `pytz` packages, plus a `de_DE.UTF-8` locale (used to format weekday
|
|
||||||
names). Inside `nix develop` these are provided automatically.
|
|
||||||
|
|
||||||
To build with *nix*: `nix build '.?submodules=1#production-content'`
|
To build with *nix*: `nix build '.?submodules=1#production-content'`
|
||||||
|
|
||||||
|
|
@ -51,8 +41,7 @@ To build with *nix*: `nix build '.?submodules=1#production-content'`
|
||||||
3. Commit (and push) your change.
|
3. Commit (and push) your change.
|
||||||
4. ~~GitHub Actions is running the release workflow.~~
|
4. ~~GitHub Actions is running the release workflow.~~
|
||||||
- If successful, check [Staging Website](https://staging.berlin.ccc.de/) if change is correct.
|
- If successful, check [Staging Website](https://staging.berlin.ccc.de/) if change is correct.
|
||||||
5. Create a merge request to merge changes from `staging` to `production` branch. Ask somebody to check merge request or
|
5. Create merge request to merge changes from `staging` to `production` branch. Ask somebody to check merge request or if small change, merge yourself.
|
||||||
if small change, merge yourself.
|
|
||||||
6. ~~GitHub Actions is running the release workflow.~~
|
6. ~~GitHub Actions is running the release workflow.~~
|
||||||
- If successfull, check [Website](https://berlin.ccc.de/) if change is correct.
|
- If successfull, check [Website](https://berlin.ccc.de/) if change is correct.
|
||||||
7. Profit!
|
7. Profit!
|
||||||
|
|
@ -61,12 +50,9 @@ To build with *nix*: `nix build '.?submodules=1#production-content'`
|
||||||
|
|
||||||
- After entering the shell with `nix develop`, hugo is available and `hugo serve` should work
|
- After entering the shell with `nix develop`, hugo is available and `hugo serve` should work
|
||||||
- Python including required packages will be available, so the `build.sh` should work without a venv
|
- Python including required packages will be available, so the `build.sh` should work without a venv
|
||||||
- You can build the staging and production builds with `nix build .#staging-content` and
|
- You can build the staging and production builds with `nix build .#staging-content` and `nix build .#production-content`
|
||||||
`nix build .#production-content`
|
- Do not update the nixpkgs branch - 25.05 contains a newer hugo version that is incompatible with the theme (last checked June 2025)
|
||||||
- Do not update the nixpkgs branch - 25.05 contains a newer hugo version that is incompatible with the theme (last
|
|
||||||
checked June 2025)
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Made with ❤️ and [Hugo](https://gohugo.io).
|
Made with ❤️ and [Hugo](https://gohugo.io).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -131,12 +131,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
else if (rruleStr.includes("FREQ=MONTHLY") && rruleStr.includes("BYDAY")) {
|
else if (rruleStr.includes("FREQ=MONTHLY") && rruleStr.includes("BYDAY")) {
|
||||||
const bydayMatch = rruleStr.match(/BYDAY=([^;]+)/);
|
const bydayMatch = rruleStr.match(/BYDAY=([^;]+)/);
|
||||||
if (bydayMatch) {
|
if (bydayMatch) {
|
||||||
const intervalMatch = rruleStr.match(/INTERVAL=(\d+)/);
|
|
||||||
const interval = intervalMatch ? parseInt(intervalMatch[1]) : 1;
|
|
||||||
const monthsFromStart = (year - startDate.getFullYear()) * 12 + (month - startDate.getMonth());
|
|
||||||
if (monthsFromStart < 0 || monthsFromStart % interval !== 0) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
const bydays = bydayMatch[1].split(',');
|
const bydays = bydayMatch[1].split(',');
|
||||||
const dayMap = {
|
const dayMap = {
|
||||||
'MO': 1, 'TU': 2, 'WE': 3, 'TH': 4, 'FR': 5, 'SA': 6, 'SU': 0
|
'MO': 1, 'TU': 2, 'WE': 3, 'TH': 4, 'FR': 5, 'SA': 6, 'SU': 0
|
||||||
|
|
@ -431,7 +425,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ICS-Datei abrufen und Events verarbeiten
|
// ICS-Datei abrufen und Events verarbeiten
|
||||||
fetch('/calendars/all.ics')
|
fetch('/all.ics')
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
events = parseICS(data);
|
events = parseICS(data);
|
||||||
|
|
@ -442,7 +436,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
currentMonth = today.getMonth();
|
currentMonth = today.getMonth();
|
||||||
|
|
||||||
// Process events for current month
|
// Process events for current month
|
||||||
|
|
||||||
updateEventsForMonth(currentYear, currentMonth);
|
updateEventsForMonth(currentYear, currentMonth);
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(err => console.error('Fehler beim Laden der ICS-Datei:', err));
|
.catch(err => console.error('Fehler beim Laden der ICS-Datei:', err));
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,11 @@ function timeDistanceDE(pastDate) {
|
||||||
const hours = Math.floor(minutes / 60)
|
const hours = Math.floor(minutes / 60)
|
||||||
const days = Math.floor(hours / 24)
|
const days = Math.floor(hours / 24)
|
||||||
|
|
||||||
if (days === 1) return `since ${days}d`
|
if (days = 1) return `since ${days}d`
|
||||||
if (days > 1) return `since ${days}d`
|
if (days > 1) return `since ${days}d`
|
||||||
if (hours === 1) return `since ${hours}h`
|
if (hours = 1) return `since ${hours}h`
|
||||||
if (hours > 1) return `since ${hours}h`
|
if (hours > 1) return `since ${hours}h`
|
||||||
if (minutes === 1) return `since ${minutes}min`
|
if (minutes = 1) return `since ${minutes}min`
|
||||||
if (minutes > 1) return `since ${minutes}min`
|
if (minutes > 1) return `since ${minutes}min`
|
||||||
return `gerade eben`
|
return `gerade eben`
|
||||||
}
|
}
|
||||||
|
|
|
||||||
7
build.sh
7
build.sh
|
|
@ -1,7 +1,12 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
set -ex
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
rm -rf public/ # delete old generated files
|
rm -rf public/ # delete old generated files
|
||||||
|
|
||||||
hugo $(cat .hugo-params)
|
hugo $(cat .hugo-params)
|
||||||
|
./tools/merge_cals.py
|
||||||
|
upcoming="$(tools/gen_upcoming.py static/all.ics 20 5 | tr '\n' ' ')"
|
||||||
|
cp static/all.ics public/all.ics
|
||||||
|
sed -i "s#CALENDAR#$upcoming#g" public/index.html
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ filename = "sitemap.xml"
|
||||||
priority = 0.5
|
priority = 0.5
|
||||||
|
|
||||||
[permalinks]
|
[permalinks]
|
||||||
post = "/post/:year/:month/:day/:slug/"
|
post = "/post/:year/:month/:day/:title/"
|
||||||
|
|
||||||
[outputs]
|
[outputs]
|
||||||
home = ["html", "rss", "json"]
|
home = ["html", "rss", "json"]
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,6 @@ description: "Startseite CCCB mit Kurzkalender"
|
||||||
|
|
||||||
### Nächste Veranstaltungen
|
### Nächste Veranstaltungen
|
||||||
|
|
||||||
<table id="upcoming" class="table table-condensed">
|
CALENDAR
|
||||||
</table>
|
|
||||||
|
|
||||||
Weitere Termine findest du im [Veranstaltungskalender](/verein/calendar/).
|
Weitere Termine findest du im [Veranstaltungskalender](/verein/calendar/).
|
||||||
|
|
||||||
<script type="module" src="/js/upcoming.js"></script>
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
---
|
|
||||||
title: "Kein DI.Day am 5. Juli im CCCB"
|
|
||||||
date: 2026-07-04T12:00:00+02:00
|
|
||||||
showHero: false
|
|
||||||
tags: ["di.day", "Ankündigung"]
|
|
||||||
---
|
|
||||||
|
|
||||||
**Kurzfristige Änderung:** Der [Digital Independence Day](/veranstaltungen/didit/) findet am **Sonntag, dem 5. Juli 2026, nicht** im Chaos Computer Club Berlin (Marienstraße 11) statt.
|
|
||||||
|
|
||||||
Wer trotzdem am DI.Day teilnehmen und den Weg in die digitale Unabhängigkeit weitergehen möchte, ist herzlich bei den anderen Berliner Veranstaltungen willkommen:
|
|
||||||
|
|
||||||
- [„Let's DID it!" mit Linux & Sommerfest der BELUG](https://f.termine.di.day/events/ee48fdda-a134-4f27-932e-b87c7a9fa24a) in der c-base
|
|
||||||
- [DI.Day im Stadtschloss Moabit](https://f.termine.di.day/events/41ab17fe-05ab-4308-9abb-d38d9485fd4f)
|
|
||||||
|
|
||||||
Weitere Termine und Orte findet ihr wie immer auf [termine.di.day](https://termine.di.day/).
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
---
|
|
||||||
title: "Aktionstag gegen Überwachung"
|
|
||||||
date: 2026-08-11T12:00:00+02:00
|
|
||||||
showHero: false
|
|
||||||
tags: ["Überwachung", "Ankündigung"]
|
|
||||||
---
|
|
||||||
|
|
||||||
### Was?
|
|
||||||
|
|
||||||
KI-gestützte Überwachungskameras sollen jetzt auch nach Berlin kommen.
|
|
||||||
Das [im Dezember 2025 verschärfte Berliner Polizeigesetz](https://www.beck-aktuell.de/heute-im-recht/rechtspolitik-gesetzgebung/berlin-verschaerfung-polizeigesetz-2025-12-04) erlaubt der Polizei, solche Kameras an öffentlichen Plätzen aufzuhängen. Erste Versuche laufen schon.
|
|
||||||
|
|
||||||
Darüber wollen wir reden.
|
|
||||||
Deshalb laden wir am 23. August zum Aktionstag gegen Überwachung in den Club ein.
|
|
||||||
|
|
||||||
### Worum geht es?
|
|
||||||
|
|
||||||
Die KI-Videoüberwachung soll [ein Jahr lang an sechs sogenannten „kriminalitätsbelasteten Orten" getestet werden](https://taz.de/KI-Videoueberwachung-in-Berlin/!6160851/), darunter am Alexanderplatz, am Roten Rathaus und am Alten Stadthaus. Vor dem Abgeordnetenhaus kommt mobile Technik dazu.
|
|
||||||
|
|
||||||
Diese Kameras zeichnen nicht nur auf. Sogenannte Verhaltensscanner sollen automatisch melden, wenn sich jemand „auffällig" verhält. Trainiert wird das Ganze [mit den Daten von Passant:innen, die einfach nur vorbeilaufen](https://netzpolitik.org/2026/ki-gestuetzte-videoueberwachung-in-berlin-so-wehrt-man-sich-gegen-verhaltensscanner/).
|
|
||||||
|
|
||||||
In Mannheim läuft so ein System seit 2018, in Hamburg seit 2023. Dort hält die Software [eine Umarmung schon mal für einen Ringkampf](https://taz.de/Kuenstliche-Intelligenz-im-Einsatz/!6099559/). In Mannheim gab es laut Polizei [jeden Tag Fehlalarme im „niedrigen zweistelligen Bereich"](https://netzpolitik.org/2023/intelligente-videoueberwachung-polizei-hamburg-will-ab-juli-verhalten-automatisch-scannen/). Wer sich hinlegt oder taumelt, löst Alarm aus. Was überhaupt als „auffällig" gilt, entscheidet der Algorithmus. Warum das [Menschen diskriminieren kann, erklärt der Verfassungsblog](https://verfassungsblog.de/berlin-asog-novelle-kbos/).
|
|
||||||
|
|
||||||
Die Kameras sind außerdem nur ein Teil der Gesetzesänderung. Das neue ASOG erlaubt auch [längere Datenspeicherung und weitere Überwachungsbefugnisse](https://www.telepolis.de/article/Berliner-Polizeigesetz-Koalition-weitet-Ueberwachung-aus-11083345.html). Die Berliner Datenschutzbeauftragte hat das kritisiert. Wir auch: Der CCC war dazu bereits im Innenausschuss des Abgeordnetenhauses.
|
|
||||||
|
|
||||||
Ihr braucht kein Vorwissen. Kommt einfach vorbei.
|
|
||||||
|
|
||||||
### Programm
|
|
||||||
|
|
||||||
**13:00 Uhr: Open Space** \
|
|
||||||
Wir fangen mit offenem Austausch an. Bringt eure Fragen mit, egal ob ihr euch schon lange mit dem Thema beschäftigt oder gerade zum ersten Mal davon hört.
|
|
||||||
|
|
||||||
**15:00 Uhr: Vortrag** \
|
|
||||||
Was in Berlin geplant ist, was die Technik wirklich kann und was das für uns alle heißt.
|
|
||||||
|
|
||||||
**16:00 Uhr: Podiumsdiskussion** \
|
|
||||||
Danach diskutieren wir auf dem Podium, wie wir uns gegen die KI-Videoüberwachung wehren können. Fragen aus dem Publikum sind ausdrücklich erwünscht.
|
|
||||||
|
|
||||||
### Wo?
|
|
||||||
|
|
||||||
📍 **Chaos Computer Club Berlin, Marienstraße 11, 10117 Berlin**
|
|
||||||
|
|
||||||
🚈 Etwa 5 Minuten ab dem S-Bahnhof Friedrichstraße
|
|
||||||
|
|
||||||
### Wann?
|
|
||||||
|
|
||||||
**📆 Sonntag, 23. August 2026** \
|
|
||||||
**ab 13:00 Uhr**
|
|
||||||
|
|
||||||
### Zum Weiterlesen
|
|
||||||
|
|
||||||
- taz: [KI-Videoüberwachung in Berlin: Verhaltensscanner bald auch vor dem Abgeordnetenhaus](https://taz.de/KI-Videoueberwachung-in-Berlin/!6160851/)
|
|
||||||
- netzpolitik.org: [So wehrt man sich gegen Verhaltensscanner](https://netzpolitik.org/2026/ki-gestuetzte-videoueberwachung-in-berlin-so-wehrt-man-sich-gegen-verhaltensscanner/) (mit Tools und Material für die Zivilgesellschaft)
|
|
||||||
- Verfassungsblog: [„Try harder hilft selten": die ASOG-Novelle verfassungsrechtlich eingeordnet](https://verfassungsblog.de/berlin-asog-novelle-kbos/)
|
|
||||||
- taz: [Reform des Berliner Polizeigesetzes: Riskantes Manöver](https://taz.de/Reform-des-Berliner-Polizeigesetzes/!6096087/)
|
|
||||||
- Telepolis: [Berliner Polizeigesetz: Koalition weitet Überwachung aus](https://www.telepolis.de/article/Berliner-Polizeigesetz-Koalition-weitet-Ueberwachung-aus-11083345.html)
|
|
||||||
- beck-aktuell: [Kameras und KI-Einsatz: Berlin verschärft Polizeigesetz](https://www.beck-aktuell.de/heute-im-recht/rechtspolitik-gesetzgebung/berlin-verschaerfung-polizeigesetz-2025-12-04)
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
title: "Der Neujahresempfang 2026 #NJE26"
|
title: "Der Neujahresempfang 2026 #NJE26"
|
||||||
slug: "neujahresempfang-2026"
|
|
||||||
date: 2026-03-05T12:00:00+01:00
|
date: 2026-03-05T12:00:00+01:00
|
||||||
showHero: false
|
showHero: false
|
||||||
tags: ["NJE", "Ankündigung"]
|
tags: ["NJE", "Ankündigung"]
|
||||||
|
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
---
|
|
||||||
title: "Aktionstag gegen Überwachung"
|
|
||||||
subtitle: "KI-Überwachungskameras in Berlin: Vortrag, Podium und Austausch"
|
|
||||||
date: 2026-08-11T12:00:00+02:00
|
|
||||||
dtstart: 20260823T130000
|
|
||||||
dtend: 20260823T180000
|
|
||||||
menu:
|
|
||||||
main:
|
|
||||||
parent: "Veranstaltungen"
|
|
||||||
tag: ["Veranstaltung"]
|
|
||||||
---
|
|
||||||
|
|
||||||
**Am 23. August lädt der Chaos Computer Club Berlin zum Aktionstag gegen Überwachung.**
|
|
||||||
|
|
||||||
KI-gestützte Überwachungskameras sollen jetzt auch nach Berlin kommen. Das neue Berliner Polizeigesetz erlaubt es, sie an öffentlichen Plätzen aufzuhängen. Erste Versuche laufen schon, Verhaltenstracking inklusive. Darüber wollen wir reden.
|
|
||||||
|
|
||||||
Das Programm:
|
|
||||||
|
|
||||||
- **13:00 Uhr:** Open Space, offener Austausch untereinander
|
|
||||||
- **15:00 Uhr:** Vortrag zu den KI-Kameras und dem neuen Berliner Polizeigesetz
|
|
||||||
- **16:00 Uhr:** Podiumsdiskussion
|
|
||||||
|
|
||||||
📍 Chaos Computer Club Berlin, Marienstraße 11, 10117 Berlin
|
|
||||||
|
|
@ -26,7 +26,7 @@ draft: true
|
||||||
|
|
||||||
|
|
||||||
{{< alert "circle-info" >}}
|
{{< alert "circle-info" >}}
|
||||||
Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/veranstaltungen/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen.
|
Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/page/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen.
|
||||||
|
|
||||||
Generell sind aber alle, die schon mal im Club waren, herzlich eingeladen, an den Bastelabenden vorbeizukommen.
|
Generell sind aber alle, die schonmal im Club waren, herzlich eingeladen, an den Bastelabenden vorbeizukommen.
|
||||||
{{< /alert >}}
|
{{< /alert >}}
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
---
|
|
||||||
title: "Di.Day"
|
|
||||||
subtitle: "Digital Independence Day im CCCB"
|
|
||||||
date: 2026-01-04T12:23:00+01:00
|
|
||||||
dtstart: 20260104T122300
|
|
||||||
dtend: 20260104T174200
|
|
||||||
rrule: "FREQ=MONTHLY;INTERVAL=2;BYDAY=1SU;WKST=MO;UNTIL=20260503T235959Z"
|
|
||||||
menu:
|
|
||||||
main:
|
|
||||||
parent: "Veranstaltungen"
|
|
||||||
tag: ["Veranstaltung"]
|
|
||||||
---
|
|
||||||
|
|
||||||
In Berlin wird der [Digital Independence Day](https://diday.org) an verschiedenen Orten von einer breiten Zahl von Initiativen getragen.
|
|
||||||
|
|
||||||
Der CCCB beteiligt sich an dieser Graswurzelbewegung und ruft dazu auf, zu demokratiefreundlichen digitalen Alternativen zu wechseln, um die Abhängigkeit von großen Technologiekonzernen zu verringern.
|
|
||||||
|
|
||||||
Am ersten Sonntag im Monat gibt es praktische Hilfe beim Wechsel zu datenschutzfreundlichen Diensten, beim Einrichten von Linux oder beim Betrieb von Smartphones ohne große Tech-Konzerne. Egal, ob Anfänger:in oder Fortgeschrittene:r. Kommt vorbei und bringt eure Geräte und Fragen mit.
|
|
||||||
|
|
||||||
Die Aktiven im CCCB unterstützen dabei auf verschiedenen Veranstaltungen in Berlin.
|
|
||||||
|
|
||||||
Weitere Informationen zu konkreten Veranstaltungen gibt es im Terminkalender unter [https://events.diday.org/](https://events.diday.org/) bzw [https://events.diday.org/organisation/cccb](https://events.diday.org/organisation/cccb).
|
|
||||||
|
|
@ -2,12 +2,13 @@
|
||||||
title: "Neujahresempfang"
|
title: "Neujahresempfang"
|
||||||
subtitle: "#NJE 26"
|
subtitle: "#NJE 26"
|
||||||
date: 2025-03-05T18:00:00+02:00
|
date: 2025-03-05T18:00:00+02:00
|
||||||
dtstart: 20260523T180000
|
dtstart: 20250523T180000
|
||||||
dtend: 20260524T100000
|
dtend: 20250524T100000
|
||||||
|
rrule: "FREQ=MOTHLY;BYDAY=4SA;WKST=MO"
|
||||||
menu:
|
menu:
|
||||||
main:
|
main:
|
||||||
parent: "Veranstaltungen"
|
parent: "Veranstaltungen"
|
||||||
tag: ["Veranstaltung"]
|
tag: ["Veranstaltung"]
|
||||||
---
|
---
|
||||||
|
|
||||||
Am 23. Mai lädt der Chaos Computer Club Berlin zum Neujahresempfang. [Hier geht es zur Infoseite!](https://berlin.ccc.de/post/2026/03/05/neujahresempfang-2026/)
|
Am 23. Mai lädt der Chaos Computer Club Berlin zum Neujahresempfang. [Hier geht es zur Infoseite!](https://berlin.ccc.de/post/2026/03/05/der-neujahresempfang-2026-%23nje26/)
|
||||||
|
|
@ -2,9 +2,9 @@
|
||||||
title: "OpenWrt"
|
title: "OpenWrt"
|
||||||
subtitle: "OpenWrt Stammtisch"
|
subtitle: "OpenWrt Stammtisch"
|
||||||
date: 2025-01-08T20:00:00+02:00
|
date: 2025-01-08T20:00:00+02:00
|
||||||
dtstart: 20251119T200000
|
dtstart: 20250115T200000
|
||||||
dtend: 20251119T230000
|
dtend: 20250115T230000
|
||||||
rrule: "FREQ=MONTHLY;INTERVAL=3;BYDAY=3WE;WKST=MO"
|
rrule: "FREQ=MONTHLY;BYDAY=3WE;WKST=MO"
|
||||||
menu:
|
menu:
|
||||||
main:
|
main:
|
||||||
parent: "Veranstaltungen"
|
parent: "Veranstaltungen"
|
||||||
|
|
@ -13,7 +13,7 @@ tag: ["Veranstaltung"]
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Jeden 3. Mittwoch im Februar, Mai, August und November ab 20 Uhr** treffen sich die OpenWrt begeisterten und die es werden wollen zum OpenWrt Stammtisch im CCCB.
|
**Jeden 3. Mittwoch im Monat ab 20 Uhr** treffen sich die OpenWrt begeisterten und die es werden wollen zum OpenWrt Stammtisch im CCCB.
|
||||||
|
|
||||||
Das OpenWrt Meetup richtet sich an alle die OpenWrt benutzen oder benutzen wollen aber auch Leute die an OpenWrt entwickeln.
|
Das OpenWrt Meetup richtet sich an alle die OpenWrt benutzen oder benutzen wollen aber auch Leute die an OpenWrt entwickeln.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ tag: ["Veranstaltung"]
|
||||||
**Jeden 2. und 4. Samstag im Monat ist ab 17 Uhr Spieleabend im Club.**
|
**Jeden 2. und 4. Samstag im Monat ist ab 17 Uhr Spieleabend im Club.**
|
||||||
|
|
||||||
{{< alert "circle-info" >}}
|
{{< alert "circle-info" >}}
|
||||||
Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/veranstaltungen/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen.
|
Wenn ihr neu seid und den CCCB zum ersten Mal besuchen wollt, kommt am besten an einem Donnerstag zum [Club Discordia](/page/clubdiscordia/), da samstags nicht immer genug Leute da sind, um euch zu empfangen.
|
||||||
|
|
||||||
Generell sind aber alle, die schon mal im Club waren, herzlich eingeladen, an den Spieleabenden vorbeizukommen.
|
Generell sind aber alle, die schonmal im Club waren, herzlich eingeladen, an den Spieleabenden vorbeizukommen.
|
||||||
{{< /alert >}}
|
{{< /alert >}}
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue