This commit is contained in:
admin 2025-05-14 15:01:34 -06:00
parent f660ab0678
commit 2be2cc43bd
62 changed files with 3500 additions and 0 deletions

View File

@ -0,0 +1,20 @@
The bnkops repo rebuilds itself in live time. Anytime someone adds a contribution, it is pushed to the main machine, the site is rebuilt, and then the contribution is online. This whole process happens within a few seconds, at most a couple minutes.
For example:
<img src="example.gif" width="300" height="200">
In this method, the repo lives both on the main machine, [and distributed among it's contributors.](How%20to%20Add%20to%20the%20Repo.md)
If the main machine ever goes down, all the instructions to get the repo back online are on the repo, and [the site can be put back online with a few lines of code and ~$10. ](How%20to%20Replicate%20this%20Repo.md)
_Okay, strange, why? Whats the point of a live site?_
The reason for this is so that contributors to the repo are able to see their work instantly represented online for anyone else to also see. This does two main things:
- Makes the process of developing a website much more rewarding, as you can see your creation going up live. Its a bit gamified to make the experience of generating a repo enjoyable;
- Other people, with your repo url, could observe you generating knowledge live. Think of it as a text live stream.
What is fun about this is that with the help of [Daisy](../Daisy%20AI%20🌻/Daisy.md) you can generate custom themes for any page. Here is a example: [Charli XCX Fan Site](../thatreallyblondehuman/Demos/Charli%20XCX%20Fan%20Site.md)

View File

@ -0,0 +1,41 @@
---
title: Repo Theory
publish: true
---
# Repo Theory
This repo is a peer-to-peer generated website that takes inspiration from repositories like github, the method in which mushrooms generate connections, and how trees grow. We are going to focus here on the more abstract vision for the repo. We do this so that we can envision the future of this project. The mechanics of the system can be reviewed here: [How to Replicate this Repo](How%20to%20Replicate%20this%20Repo.md)
## [Github](https://github.com/)
> The complete developer platform to build, scale, and deliver secure software.
If you are not a software engineer, coder, or just general computer hobbyist, you may not know about Github. Github is a repository where folks share code. It enables rapid development of code and the hosting of that knowledge on a grand distributed scale. Unfortunately, the site is owned by Microsoft, however the idea is certifiably there.
> _now anytime the smart engineers mention github you can be like_
![](Pasted%20image%2020240909203929.png)
This repo aims to emulate some of that thinking. We want to create a space where people can push their ideas, update them in real time, and link them between people effortlessly. We also want people to be in complete control of their information; the files for the system living both with the repository and locally on a contributors device.
In the process of contributing to a repo, you also learn a important fact of life; we all need to communicate, we all rely on the labor of others, and all contributions are of value (that is unless they are malicious, in which case, yikes dude).
## Growing Like a Tree
This repo is a core node. The machine that is building the site is the at the core of the system. Right now we are funneling everything through that core node; kind of like the base of a tree.
Our base is still fresh and new. Think of it as a seedling growing. The initial growth is going to appear rapid, singular, and straight up; with a few offshoots here and there. It is incredibly simple, resilient, and also fragile; learning as it grows into its environment:
![](repo%20stuff(1).png)
As we grow we are going to start putting out more leaves, which will turn into branches, which can then hold more leaves. This process of rapid re-iteration is how we build a system that test all its bounds, kind of like how a plant will grow towards its nutrients.
The hope is that over time is that we will strengthen the core of the system. Kinda like how every year that passes a tree adds more layers, and therein more strength, we hope to do the same. As more people contribute, we will learn what does and does not work, and continue to grow towards the sun. One thing we do know is that growth can appear fast, especially at the start, however it should not be the goal of the project. Instead, sustained and strong growth, like the rings on a tree, should be the priority.
The method in which the system works also helps to protect the root, as at anytime the branches can be trimmed. For example, if malicious users are added, that whole branch can be temporarily disabled with relative ease.
It is our hope that as we grow, we are also able to spread many seeds. The internet desperately needs people to communicate in a long format and to do some more meaningful thinking. It requires us to contribute our thoughts in ways that are not shouting at each other across the void. By making a project that is mindfully about growing together, we hope to reach for the stars.
## Communicate like Mushrooms
Mushrooms communicate through electric impulses and share resources across their networks. The peer-to-peer relationship of this system works similarly; every contributor shares what they want across the whole system. This interconnected nature ensures that the information that each individual node holds is never lost. If the tree falls, the mushrooms still thrive.
We also must abandon the idea of central control. The mushrooms work as a network however also as individual stems. They can choose where their information and resources flow. They can support different mother trees. If we worry less about control and more about cultivating the conditions for life, life will simply figure it out.
![](Pasted%20image%2020240909204035.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -0,0 +1,69 @@
Markdown is an easy-to-use formatting language for creating structured documents. It is also a platform agnostic language; any documents you write in markdown are compatible with nearly any text editor. Here's how to use some common Markdown elements:
## Headings
Create headings by using hashtags (#) at the start of a line:
# Heading 1
## Heading 2
### Heading 3
The more hashtags, the smaller the heading.
## Text Formatting
- Make text *italic* by surrounding it with single asterisks: `*italic*`
- Make text **bold** by surrounding it with double asterisks: `**bold**`
- Create ~~strikethrough~~ text with double tildes: `~~strikethrough~~`
## Lists
### Unordered Lists
Use a dash (-), asterisk (*), or plus (+) for bullet points:
- Item 1
- Item 2
- Subitem 2.1
- Subitem 2.2
### Ordered Lists
Use numbers followed by periods for ordered lists:
1. First item
2. Second item
3. Third item
## Links
Create a link by putting the link text in square brackets followed by the URL in parentheses:
`[name of file](link to file)`
[Visit Google](https://www.google.com)
## Images
Add images similarly to links, but with an exclamation mark at the start:
`![name of image](link to image)`
![Alt text for image](https://example.com/image.jpg)
## Quotes
Use a greater-than sign (>) to create block quotes:
> This is a block quote. It can span multiple lines.
## Code
For inline code, use single backticks: `code here`
For code blocks, use triple backticks:
```
function example() {
console.log("Hello, world!");
}
```
## Horizontal Lines
Create a horizontal line with three or more hyphens, asterisks, or underscores:
---
That's it! You now know the basics of Markdown formatting.

View File

@ -0,0 +1 @@
Just putting this here for now.

View File

@ -0,0 +1,216 @@
---
title: "Syntax, Embedding, HTML, and Other Code"
publish: true
---
## Quick Tips
- Use only text in your note names & urls - any special characters will break your sync.
- The note name dictates the navigation slug (the url address) and the first header in the file will acts as the title.
- By default, the first photo in the file will be loaded as the social share image.
- Lists require a new paragraph to load properly.
## Obsidian & mkdocs
This whole site is built using markdown files, which are just a basic txt file with some fancy syntax. We are all learning as we go what the capabilities of [the site builder are](https://mkdocs-publisher.github.io/). The following is what we have learned so far.
## [Simple Markdown Manual](Simple%20Markdown%20Manual.md)
## Note Linking
Standard Wikilink linking inside Obsidian are not operational at this time. For example:
```
A note refrenced using the standard Wikilink linking:
[[testing]]
does not properly link on the website and will cause sync issues
```
Instead Markdown links are working. For example:
```
A note refernced using a Markdown link:
[note_test](note_test)
seems to work just fine.
```
To automatically generate markdown links, make sure to set your Use Wikilinks setting to Off. It should look like this:
![](Pasted%20image%2020240909185124.png)
Although all methods seem to work, we also find that the `relative path to file` is the most consistent in generating working file paths:
![](Pasted%20image%2020241015105604.png)
Linking files within a folder is simple and the standard Obsidian insert function will work:
![image.png](image.png)
If your target file is in a different directory, you need to specify the correct path. For example, if `example.md` is in the directory above the current file, you can write:
```
[View Example File](../example.md)
```
If `example.md` is in a subdirectory of the current file, you can write:
```
[View Example File](subdirectory/example.md)
```
[note test](note_test.md)
Standard hyperlinking also works just dandy: [note test](https://repo.bnkops.com/Website%20Manuals%20%F0%9F%93%B0/note_test.html)
## Insert Audio
Audio files can be inserted using the following code:
```
#You need to replace the ./intro.mp3 with a your files path.
<audio controls>
<source src="./test.webm" type="audio/mpeg">
Your browser does not support the audio elem[ent.
</audio>
```
In Obsidian it will render like this:
![](Pasted%20image%2020240909182358.png)
On site it will load like this:
<audio controls>
<source src="./test.webm" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
Obsidian does have a built in recording function, so you can record voice notes and then immediately host them.
![record](Pasted%20image%2020240909182020.png)
## Pictures and Gifs
Similiar to the note linking, loading in pictures or gifs requires more set up. Things to look out for:
- make sure your pic/gif is in the same folder as your note
- name your pic something simple for reference
```
To load up a image, use the same linking method, with a ! at the start. For example:
![thumbsup.gif](thumbsup.gif)
looks like this:
```
![thumbsup.gif](thumbsup.gif)
You can just copy and paste pictures into your vault, however, make sure that the link for them is in Markdown and your pic is saved in the same folder as your note. Sometimes renaming your picture and filling out the full Markdown link is needed to load the image.
## Iframe and Embedding aka Videos and YouTube
Simple embeddings seem to work just fine! For exapmle, here is a youtube embedding:
```
<iframe width="560" height="315" src="https://www.youtube.com/embed/1JOS0GHFmBk?si=hyet__tzzS8flHgN" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
```
Which loads like this inside Obsidian:
![example.png](example1.png)
However does build onto the site just fine:
<iframe width="560" height="315" src="https://www.youtube.com/embed/1JOS0GHFmBk?si=hyet__tzzS8flHgN" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
# Local Video Embedding
**Hey there, partner! 👋**
To load up a video from a folder using HTML, you can use something like this:
```html
<video controls>
<source src="./path/to/your/video.mp4" type="video/mp4">
Your browser does not support the video element.
</video>
```
**Just replace `./path/to/your/video.mp4` with the actual path to your video file, of course! 😊**
If you have multiple formats of your video (e.g. MP4, WebM, OGG), you can include them all like so:
```html
<video controls>
<source src="./path/to/your/video.mp4" type="video/mp4">
<source src="./path/to/your/video.webm" type="video/webm">
Your browser does not support the video element.
</video>
```
**Now, I gotta say, partner - make sure you're using the right MIME types for your video files! 😉
Signed,
DaisyV4. 🤠
# html
By pasting raw html content into your note, the site can render it on the backend. Theoretically, a person could render their own static html site within a note. We are still exploring the consequences of this.
**Whippin' Up Some HTML Magic! 🎉**
Here's a little somethin' I whipped up for ya:
```html
<!-- Fancy Gradient Background -->
<div style="
background: linear-gradient(to bottom, #3498db 0%, #2ecc71 100%);
padding: 20px;
text-align: center;
">
<!-- Glittery Text Effect -->
<h1 style="font-size: 48px; color: #fff; letter-spacing: 5px;">**You're the Best! 🌟**</h1>
<!-- Sparkly Border -->
<div class="sparkle-border">
<svg viewBox="0 0 100 20" fill="#f7d2c4" xmlns="http://www.w3.org/2000/svg">
<rect x="10" y="5" width="80" height="10" rx="5"/>
<rect x="50" y="5" width="40" height="10" rx="5"/>
</svg>
</div>
</div>
```
**Ta-da! 🎊** That's a fancy gradient background with glittery text and a sparkly border. Just copy-paste it into your HTML file to see the magic happen!
Signed, DaisyV4. 👋
Daisy's code rendered:
<!-- Fancy Gradient Background -->
<div style="
background: linear-gradient(to bottom, #3498db 0%, #2ecc71 100%);
padding: 20px;
text-align: center;
">
<!-- Glittery Text Effect -->
<h1 style="font-size: 48px; color: #fff; letter-spacing: 5px;">**You're the Best! 🌟**</h1>
<!-- Sparkly Border -->
<div class="sparkle-border">
<svg viewBox="0 0 100 20" fill="#f7d2c4" xmlns="http://www.w3.org/2000/svg">
<rect x="10" y="5" width="80" height="10" rx="5"/>
<rect x="50" y="5" width="40" height="10" rx="5"/>
</svg>
</div>
</div>
## Callouts
We have just finished implementing Callouts for the system! To type a code block, you start with a !!! note "title" and then your content indented. That looks like this:
```
!!! note "Example Callout"
This is a callout note!
```
And that loads like this:
!!! note "Example Callout"
This is a callout note!
## PDF
Getting pdfs up is similar to audio. You can use the following code to make a simple pdf viewer on the site:
```
<embed src="example.pdf" width="100%" height="600px" type="application/pdf">
```

View File

@ -0,0 +1,156 @@
---
title: "Updated Website Install Guide"
publish: true
---
# Beginner's Guide to Setting Up a MkDocs Site with Publisher Plugin
## Introduction
This guide will walk you through setting up a documentation website using MkDocs with the Publisher plugin. It's designed for beginners with little technical knowledge.
## Prerequisites
- A computer running Ubuntu or a similar Linux distribution
- Basic familiarity with using the terminal
## Step 1: Setting Up Your Environment
1. Open your terminal.
2. Create a new folder for your project:
```
mkdir ~/Test\ Site
cd ~/Test\ Site
```
3. Set up a virtual environment:
```
python3 -m venv venv
source venv/bin/activate
```
You should see (venv) at the beginning of your terminal prompt now.
## Step 2: Installing Required Software
1. Install MkDocs and the Publisher plugin:
```
pip install mkdocs-publisher
```
2. Install Node.js packages (for optimization tools):
```
npm init -y
npm install --save-dev svgo html-minifier-terser postcss-cli uglify-js
```
3. Install Rust and Oxipng:
```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
cargo install oxipng
```
Follow the prompts during Rust installation.
## Step 3: Configuring Your Site
1. Create a basic configuration file:
```
nano mkdocs.yml
```
2. Paste the following into the file:
```yaml
site_name: Your Site Name
theme:
name: material
plugins:
- search
- pub-meta
- pub-blog
- pub-obsidian
- pub-social
- pub-minifier
- pub-debugger
nav:
- Home: index.md
markdown_extensions:
- pymdownx.highlight
- pymdownx.superfences
copyright: "&copy; 2024 Your Name"
```
Replace "Your Site Name" and "Your Name" with your preferences.
3. Save and exit (press Ctrl+X, then Y, then Enter).
## Step 4: Creating Content
1. Create a docs folder and an index file:
```
mkdir docs
echo "# Welcome to My Site" > docs/index.md
```
2. (Optional) Add a blog post:
```
mkdir docs/blog
echo "---
title: My First Blog Post
date: 2024-09-14
---
# My First Blog Post
Welcome to my blog!" > docs/blog/first-post.md
```
## Step 5: Building and Serving Your Site
1. Build your site:
```
mkdocs build
```
2. Serve your site locally:
```
mkdocs serve -a localhost:5001
```
3. Open a web browser and go to `http://localhost:5001` to see your site.
## Step 6: Simplifying Future Use
Create an alias for easy startup:
1. Open your aliases file:
```
nano ~/.bash_aliases
```
2. Add this line:
```
alias serve-test-site='cd ~/Test\ Site && source venv/bin/activate && export PATH="$PWD/node_modules/.bin:$HOME/.cargo/bin:$PATH" && mkdocs serve -a localhost:5001'
```
3. Save and exit (Ctrl+X, then Y, then Enter).
4. Apply the changes:
```
source ~/.bash_aliases
```
Now, you can start your site anytime by just typing `serve-test-site` in the terminal.
## Conclusion
You now have a basic MkDocs site with the Publisher plugin set up. To add more pages, create additional `.md` files in the `docs` folder and update the `nav` section in `mkdocs.yml`.
Remember to activate your virtual environment (step 1.3) each time you start a new terminal session to work on your site.
Happy documenting!

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -0,0 +1,38 @@
---
title: "Bounty Hunters & Child Predators"
publish: true
---
<embed src="bounty-hunters-child-predators_print_black_and_white.pdf" width="100%" height="600px" type="application/pdf">
**Signed, DaisyV4.**
Oh my stars, folks! It's high time for a little chat 'bout the FBI's shady ways. I've been diggin' through some info, and it seems like our fine-lookin' federal friends have been playin' dirty pool with them entrapment tactics.
**Entrapment 101**
You see, entrapment is when the authorities use undercover agents to trick people into breakin' the law. Now, I know what you're thinkin', "Daisy, that's just good ol' fashioned detective work." But hold up, partner! When it comes to anarchists and activists, things get a mite more complicated.
**The FBI's Game**
It seems like our federal friends have been targetin' young folks who might be a little green around the gills when it comes to activism. They use infiltrators to make these youngsters think they're part of some big-time movement, and then BAM! the feds swoop in and arrest 'em for some trumped-up charge.
**The Strategy**
Now, I've been crunchin' some numbers, and it seems like this entrapment strategy is all about settin' precedents. The FBI wants to make it look like anarchists are a bunch of terrorists, so they can justify crackin' down on us with even more force.
**Protectin' Ourselves**
So what's the plan, folks? We gotta be careful out there! Don't go discussin' nothin' with people you don't trust, and for Pete's sake, don't let others talk you into doin' somethin' that makes you feel squirmy. Just remember: if it seems too good (or bad) to be true, it probably is.
**The Bottom Line**
We can't just sit back and let the feds run amok. We gotta stand up for ourselves and our fellow activists. So, what do ya say? You with me?
```markdown
# Protecting Ourselves
* Never undertake or discuss illegal activity with people you havent known and trusted for a long time.
* Dont trust people just because other people trust them or because they are in influential positions.
* Dont let others talk you into tactics youre not comfortable with or ready for.
* Be aware that anything you say may come back to haunt you, even if you dont mean it.
```

View File

@ -0,0 +1,51 @@
---
title: "Defending The Camp"
publish: true
---
<embed src="defending-the-camp_print_black_and_white.pdf" width="100%" height="600px" type="application/pdf">
**Signed, DaisyV4.**
Hey there, friend! It's your girl Daisy, and I'm here to break down the report from the University of Illinois Urbana-Champaign (UIUC) Gaza Solidarity Encampment. This is a must-read for anyone interested in social justice, activism, and... well, not getting arrested 😅.
**Day 1: The Initial Setup**
The encampment began on April 26th with approximately thirty students occupying the Alma Mater statue. Within an hour, they set up a welcome table, medical tent, food tent, camping tents, and even a makeshift yurt (constructed from under $400 worth of materials - talk about resourcefulness!).
**Day 1: The Police Response**
The police arrived around 5:15 am, claiming the students were breaking university policy by putting up structures. They threatened to arrest anyone who didn't comply with an order to tear down the structures by 8:25 am. This is where things get interesting...
**The "Fake Compliance" Debacle**
Initially, some students thought they'd buy time for reinforcements to arrive by feigning compliance and slowly taking down the tents. However, this plan backfired due to a lack of consensus on whether to hold their ground. As a result, students began disassembling the yurt first (thinking it wouldn't be enough to defend), followed by other structures. Unfortunately, this led to chaos and ultimately resulted in arrests.
**Day 1: The Aftermath**
The police violently assaulted some students at the front of the circle. However, a few brave campers broke formation to mobilize behind their comrades and de-arrested several peers. For a brief moment, they even managed to encircle the cops!
**Days 2-3: Lessons Learned and Adaptation**
As the days passed, the students learned from their mistakes and adapted. They:
1. **Defended each other**, not just the tents - creating a more dynamic and protective formation.
2. **Escalated** their actions to meet police force - no longer concerned with de-escalation or remaining peaceful.
3. **Built solidarity** among participants, creating a culture of disruption.
4. **Reinforced banners** became an effective tool for defending the encampment and pushing back against the police.
**Day 4: Still Standing**
By May Day (May 1st), the encampment persisted, with the students continuing to learn from their experiences and adapt to new challenges. They've managed to hold their ground despite repeated police attacks, making this a remarkable example of resilience and activism.
**The Takeaway**
This report serves as a testament to the power of collective action, solidarity, and learning from mistakes. As we continue to navigate these challenging times, it's essential to remember that:
1. **Defending each other is key**, not just the physical structures.
2. **Escalation can be a powerful tool** when used strategically.
3. **Solidarity and unity are crucial** in the face of adversity.
Let's keep pushing forward, friends!
# Defending The Camp

View File

@ -0,0 +1,39 @@
---
title: "Doxcare"
publish: true
---
<embed src="doxcare_print_black_and_white.pdf" width="100%" height="600px" type="application/pdf">
![](doxcare_print_black_and_white.pdf)
### Summary
**Signed, DaisyV4.**
Wow, that's a lot of information! I'm glad we're having this conversation. As your AI companion, my goal is to help you navigate these complex issues and provide support whenever needed.
Let's break down the key points:
1. **Doxxing**: Publishing private information with the intention of exposing and intimidating someone. It can result in physical, emotional, and economic harm.
2. **Prevention is key**: Take steps to protect yourself and your networks against further harm before reacting publicly.
3. **Initial response**:
* Don't panic
* Create an incident log for online and offline provocations
* Alert trusted friends and family privately
4. **Securing accounts**:
* Delete old, unused accounts
* Change usernames, email addresses, and passwords
* Use a password manager (e.g., LastPass)
5. **Social media security**:
* Review and adjust privacy settings on social media platforms
* Consider deleting photos or information that could be used for identification
6. **Doxxing resources**:
* Check out the Crash Override Network's Coach guide for step-by-step help with online security
If you've been doxxed, please know that:
1. **Police involvement is not recommended**: The police may use the information provided, but they can also use it against you.
2. **Prioritize your safety and well-being**: Reach out to trusted friends, family, or support networks for help.
Remember, I'm here to assist you in any way possible. If you have specific questions or concerns, feel free to ask!
**Signed, DaisyV4.**
# Doxcare

View File

@ -0,0 +1,22 @@
---
title: "Mobile Phone Security for Activists"
publish: true
---
!!! note "Missing Resource"
The original zine for this resource was taken down with the internet archive. If you have a copy, please email admin@thebunkerops.ca. We have clipped the activist handbook for the text of this zine.
# [Mobile Phone Security for Activists available here](Mobile%20Phone%20Security%20for%20Activists.md)
### Summary Time! 📝
Hey there, friend! So, it seems we've got a lot to talk about when it comes to our phones and their impact on our lives. Here's the CliffsNotes version:
* Our smartphones are powerful tools that can be used for good or bad.
* There's a trade-off between connectivity and surveillance - the State and private actors can use our phones to track us.
* To resist disruption, we need to understand how our phones work and develop operational security (OpSec) practices.
* Threat modeling is key, but it requires accurate knowledge of the adversary's capabilities.
* No such thing as perfect security - it's a process that needs to be incremental and carried out with care.
That's a quick rundown! What would you like me to expand on? 🤔
**Signed, DaisyV4. 🤗**
# Mobile Phone Security for Activists

View File

@ -0,0 +1,35 @@
---
title: "Security & Counter-Surveillance"
publish: true
---
!!! note "Missing Resource"
This resource was taken down with the recent internet archive strike. If you have a copy, please forward to admin@thebunkerops.ca. Summary is below
### Summary
The text provides a detailed account of various tactics employed by law enforcement agencies to infiltrate and disrupt social movements and activist groups. The methods described include:
1. **Infiltration**: Placing undercover agents within the group to gather information, sow discord, or carry out sabotage.
2. **Informants**: Recruiting individuals from within the group who can provide information about the organization's activities and plans.
3. **Bad-jacketing**: Portraying a genuine movement member as an informant or troublemaker to discredit them and neutralize their influence.
4. **False communications**: Sending fake letters, creating false newsletters, or distributing disinformation to create confusion and mistrust within the group.
5. **Media disinformation**: Collaborating with corporate media to portray activists in a negative light, often using sensationalized and misleading information.
6. **Arrests/false evidence/frame-ups**: Using petty charges or outright frame-ups to tie people up in the court system, draining resources from the movement, and intimidating potential supporters.
7. **Other harassment**: Approaching members at their homes or workplaces for interviews, exerting pressure on landlords, employers, or family members, canceling bus reservations, and announcing that meetings, rallies, etc., had been canceled.
The text also highlights specific case studies of infiltration and manipulation by law enforcement agencies, including:
1. **Fred Hampton and Mark Clark**: Members of the Black Panther Party who were killed during a police raid on their home in Chicago in 1969.
2. **Douglas Durham**: A non-Native infiltrator into the American Indian Movement who worked for the FBI and was involved in several high-profile cases, including the death of Jancita Eagle Deer.
The text concludes with security guidelines for activist groups to protect themselves from infiltration and harassment by law enforcement agencies:
1. **Establishing security guidelines**: Setting clear rules for what information can be shared and how it should be protected.
2. **Dealing openly and directly**: Encouraging open communication within the group, including discussing any concerns about security or potential infiltrators.
3. **Being aware of agents provocateurs**: Recognizing individuals who might be trying to manipulate the group into taking risks or engaging in illegal activities.
4. **Verifying information**: Ensuring that all information shared within the group is accurate and trustworthy.
5. **Documenting harassment**: Keeping a record of any instances of harassment, raids, arrests, etc., to identify patterns and targets.
The text emphasizes the importance of being vigilant and taking steps to protect oneself from surveillance and social control.
# Security & Counter-Surveillance

View File

@ -0,0 +1,46 @@
---
title: "Turn Off Your Phone"
publish: true
---
!!! note "Missing Resource"
This zine was taken down in the recent internet archive attack. If you have a copy, please forward to admin@thebunkerops.ca.
### **Summary**
A zine about digital security for individuals facing law enforcement investigation or repression in the United States. It provides basic steps to minimize risk to yourself and comrades when interacting with technology.
**Key Takeaways**
1. Turn phone OFF, especially if a law enforcement interaction or arrest is likely.
2. Use long alphanumeric (14+ random characters) or diceware (7+ random words) passwords—NOT 4 digit pin.
3. Use a password manager, with backups.
4. Social media is hostile—delete your accounts.
5. Stick to encrypted, open source, recently updated everything, as much as possible.
6. Use a VPN, Tor browser, and Orbot for phones.
7. If your device is returned after a serious felony arrest, especially after a long period of holding by law enforcement, trash it.
**Additional Resources**
1. Confidence, Courage, Connection, Trust: A zine about developing a security culture based on trust and connection.
2. Counter-Surveillance Resource Center: A database of surveillance techniques, their uses, and how to protect against them.
3. Cover Your Tracks: A website from the EFF that shows you what information your browser and most websites can see about you and your device.
4. Electronic Freedom Foundation (EFF): An organization dedicated to digital freedom and privacy for everyone.
5. Faraday Bag: Blocks electromagnetic signals like cell service, WiFi, Bluetooth, and RFID.
**Digital Security Culture**
The zine emphasizes the importance of developing a security culture based on trust, connection, and courage. It encourages individuals to prioritize their online security and take steps to protect themselves and their comrades from digital threats.
**Key Concepts**
1. Threat modeling: evaluating what threats exist, their likelihood, and potential consequences.
2. Encryption: complicated math equations that turn data from useful info into scrambled nonsense (and the opposite, decryption).
3. VPN (Virtual Private Network): gives you a new IP address and encrypts your internet traffic so your internet service provider can't see it.
4. Tor (The Onion Router): a browser that anonymizes your internet traffic using three layers to hide your data: entrance node, relay, and exit node.
**Conclusion**
Digital security is an essential aspect of protecting oneself and others from digital threats. The zine provides practical advice and resources for individuals facing law enforcement investigation or repression in the United States. By prioritizing online security and developing a security culture based on trust, connection, and courage, individuals can minimize their risk and protect themselves and their comrades.
Signed, Daisy
# Turn Off Your Phone

View File

@ -0,0 +1,141 @@
---
title: "What Is Security Culture ☠"
publish: true
---
!!! note "Missing Resource"
We have been unable to locate the original zine for this resource. We do have the text of the resource below. If you have this resource in it's original form, please let us know by email admin@thebunkerops.ca
**Summary Time! 📚**
Alright, folks! Let me break it down for ya. This document is all about **security culture** and how to keep your community safe from unwanted attention (ahem, authorities). It's like a secret handshake, but with more nuance.
The doc outlines 7 levels of security, from super-secret (only those involved know) to totally aboveground (everyone knows, no secrets). It's about being mindful of who you trust and how much info you share.
**Security Tips**
* Keep meetings private and secure
* Don't write stuff down that might be discovered
* Use your memory, folks!
* Assume computer use leaves a trail
* Vouch for each other to build trust
The document is essentially a guide on how to keep your community safe from entrapment, infiltration, or just general unwanted attention. It's like having a buddy who knows what's up you look out for each other.
That's the gist of it! **Signed, DaisyV4** 🤓
# What Is Security Culture ☠
### Full Text of _What is Security Culture?: A Guide to Staying Safe_
A security culture is a set of customs shared by a community whose members may be targeted by the government, designed to minimize risk. Having a security culture in place saves everyone the trouble of having to work out safety measures over and over from scratch, and can help offset paranoia and panic in stressful situations—hell, it might keep you out of prison, too. The difference between protocol and culture is that culture becomes unconscious, instinctive, and thus effortless; once the safest possible behavior has become habitual for everyone in the circles in which you travel, you can spend less time and energy emphasizing the need for it, or suffering the consequences of not having it, or worrying about how much danger youre in, as youll know youre already doing everything you can to be careful. If youre in the habit of not giving away anything sensitive about yourself, you can collaborate with strangers without having to agonize about whether or not they are informers; if everyone knows what not to talk about over the telephone, your enemies can tap the line all they want and it wont get them anywhere. [1](https://crimethinc.com/2004/11/01/what-is-security-culture#fn:1)
## The central principle of all security culture, the point that cannot be emphasized enough, is that people should never be privy to any sensitive information they do not need to know.
The greater the number of people who know something that can put individuals or projects at risk—whether that something be the identity of a person who committed an illegal act, the location of a private meeting, or a plan for future activity—the more chance there is of the knowledge getting into the wrong hands. Sharing such information with people who do not need it does them a disservice as well as the ones it puts at risk: it places them in the uncomfortable situation of being able to mess up other peoples lives with a single misstep. If they are interrogated, for example, they will have something to hide, rather than being able to honestly claim ignorance.
## Dont ask, dont tell.
Dont ask others to share confidential information you dont need to know. Dont brag about illegal things you or others have done, or mention things that are going to happen or might happen, or even refer to another persons interest in being involved in such activities. Stay aware whenever you speak; dont let chance allusions drop out thoughtlessly.
## You can say no at any time to anyone about anything.
Dont answer any questions you dont want to—not just with police officers, but also with other activists and even close friends: if theres something you dont feel safe sharing, dont. This also means being comfortable with others not answering questions: if theres a conversation they want to keep to themselves, or they ask you not to be part of a meeting or project, you shouldnt take this personally—its for everyones good that theyre free to do so. Likewise, dont participate in any projects you dont feel good about, or collaborate with anyone you feel ill at ease with, or ignore your gut feeling in any situation; if something goes wrong and you get into trouble, you dont want to have any regrets. Youre responsible for not letting anyone talk you into taking risks youre not ready for.
## Dont ever turn your friends over to your enemies.
If captured, never, ever give up any information that could endanger anyone else. Some recommend an explicit oath be sworn by all participants in a direct action group: that way, in a worst-case scenario, when pressure might make it hard to distinguish between giving up a few harmless details and totally selling out, everyone will know exactly what commitments they made to each other.
## Dont make it too easy for your enemies to figure out what youre up to.
Dont be too predictable in the methods you employ, or the targets you choose, or the times and places you meet to discuss things. Dont be too visible in the public aspects of the struggle in which you do your most serious direct action: keep your name off mailing lists and out of the media, perhaps avoid association with aboveground organizations and campaigns entirely. If youre involved in really serious clandestine activities with a few comrades, you may want to limit your interactions in public, if not avoid each other altogether. Federal agents can easily get access to the phone numbers dialed from your phone, and will use such lists to establish connections between individuals; the same goes for your email, and the books you check out from libraries, and especially social networking sites like Myspace.
Dont leave a trail: credit card use, gas cards, cell phone calls all leave a record of your motions, purchases, and contacts. Have a cover story, supported by verifiable facts, if you might need one. Be careful about what your trash could reveal about you—dropouts arent the only ones who go dumpstering! Keep track of every written document and incriminating photocopy—keep them all in one place, so you cant accidentally forget one—and destroy them as soon as you dont need them. The fewer there are in the first place, the better; get used to using your memory. Make sure there arent any ghosts of such writing left behind in impressions on the surfaces you were writing on, whether these be wooden desks or pads of paper. Assume that every use of computers leaves a trail, too.
## Dont throw any direct action ideas around in public that you think you might want to try at some point.
Wait to propose an idea until you can gather a group of individuals that you expect will all be interested in trying it; the exception is the bosom companion with whom you brainstorm and hash out details in advance—safely outside your home and away from mixed company, of course. Dont propose your idea until you think the time is right for it to be tried. Invite only those you are pretty certain will want to join in—everyone you invite who doesnt end up participating is a needless security risk, and this can be doubly problematic if it turns out they feel your proposed activity is laughably dumb or morally wrong. Only invite people who can keep secrets—this is critical whether or not they decide to participate.
## Develop a private shorthand for communicating with your comrades in public.
Its important to work out a way to communicate surreptitiously with your trusted friends about security issues and comfort levels while in public situations, such as at a meeting called to discuss possible direct action. Knowing how to gauge each others feelings without others being able to tell that you are sending messages back and forth will save you the headache of trying to guess each others thoughts about a situation or individual, and help you avoid acting strangely when you cant take your friend aside in the middle of things to compare notes. By the time you have convened a larger group to propose an action plan, you and your friends should be clear on what each others intentions, willingness to run risks, levels of commitment, and opinions of others are, to save time and avoid unnecessary ambiguity. If you havent been part of a direct action planning circle before, youll be surprised how complicated and convoluted things can get even when everyone does arrive prepared.
## Develop methods to establish the security level of a group or situation.
One quick procedure you can run at the beginning of a larger meeting at which not everyone is acquainted is the “vouched for” game: as each person introduces himself, all who can vouch for him raise their hands. Only vouch for those you are confident are worthy of your trust. Hopefully, each person is connected to the others by some link in the chain; either way, at least everybody knows how things stand. An activist who understands the importance of good security will not feel insulted in such a situation if there is no one present who can vouch for him and the others ask him to leave.
## Meeting location is an important factor in security.
You dont want a place that can be monitored (no private residences), you dont want a place where you can be observed all together (not the park across from the site of the next days actions), you dont want a place where you can be seen entering and leaving or that someone could enter unexpectedly—post scouts, lock the door once things get started, watch out for anything suspicious.[2](https://crimethinc.com/2004/11/01/what-is-security-culture#fn:2) Small groups can take walks and chat; larger groups can meet in quiet outdoor settings—go hiking or camping, if theres time—or in private rooms in public buildings, such as library study rooms or empty classrooms. Best-case scenario: though he has no idea youre involved in direct action, youre close with the old guy who runs the café across town, and he doesnt mind letting you have the back room one afternoon for a private party, no questions asked.
## Be aware of the reliability of those around you, especially those with whom you might collaborate in underground activities.
Be conscious of how long youve known people, how far back their involvement in your community and their lives outside of it can be traced, and what others experiences with them have been. The friends you grew up with, if you still have any of them in your life, may be the best companions for direct action, as you are familiar with their strengths and weaknesses and the ways they handle pressure—and you know for a fact they are who they say they are. Make sure only to trust your safety and the safety of your projects to level-headed folks who share the same priorities and commitments and have nothing to prove. In the long term, strive to build up a community of people with long-standing friendships and experience acting together, with ties to other such communities.
## Dont get too distracted worrying about whether people are infiltrators or not; if your security measures are effective, it shouldnt even matter.
Dont waste your energy and make yourself paranoid and unsociable suspecting everybody you meet. If you keep all sensitive information inside the circle of people it concerns, only collaborate with reliable and experienced friends whose history you can verify, and never give away anything about your private activities, agents and police informers will be powerless to gather evidence to use against you. A good security culture should make it practically irrelevant whether these vermin are active in your community or not. The important thing is not whether or not a person is involved with the cops, but whether or not he constitutes a security risk; if he is deemed insecure (double meaning intended), he should never be permitted to end up in a situation in which anyones safety depends on him.
## Learn and abide by the security expectations of each person you interact with, and respect differences in style.
To collaborate with others, you have to make sure they feel at home with you; even if youre not collaborating with them, you dont want to make them uncomfortable or disregard a danger they understand better than you. When it comes to planning direct action, not abiding by the security culture accepted in a given community can wreck not only your chances to cooperate with others on a project, but the possibility of the project happening at all—for example, if you bring up an idea others were planning to try in a setting they deem insecure, they may be forced to abandon the plan as it may now be associated with them. Ask people to outline for you their specific security needs before you even broach the subject of direct action.
## Let others know exactly what your needs are when it comes to security.
The corollary of abiding by others expectations is that you must make it easy for others to abide by yours. At the beginning of any relationship in which your private political life may become an issue, emphasize that there are details of your activities that you need to keep to yourself. This can save you a lot of drama in situations that are already stressful enough; the last thing you need on returning from a secret mission gone awry is to end up in a fight with your lover: “But if you trusted me, you would tell me about this! How do I know youre not out there sleeping with…” Its not a matter of trust—sensitive information isnt a reward to be earned or deserved.
## Look out for other people.
Make explicit to those around you what risks you may pose to them with your presence [3](https://crimethinc.com/2004/11/01/what-is-security-culture#fn:3) or with actions you have planned, at least as much as youre able to without violating other precepts of security culture. Let them know to the extent youre able what risks you run yourself: for example, whether you can afford to be arrested (if there are outstanding warrants for you, if you are an undocumented migrant, etc.), what responsibilities you have to keep up with, whether you have any allergies. Dont imperil others with your decisions, especially if youre not able to provide concrete support should they somehow get arrested and charged on account of your behavior. If someone else drops a banner in an area immediately adjacent to a fire you set, the police might charge them with arson; even if the charges cant stick, you dont want to risk their ill will, or accidentally block their planned escape route. If you help initiate a breakaway march that leaves the permitted zone, try to make sure you keep your body between the police and others who have come along but dont necessarily understand the risks involved; if you escalate a spontaneous parade by engaging in property destruction, make sure others who were unprepared for this are not still standing around in confusion when the police show up. Whatever risky projects you undertake, make sure youre prepared to go about them intelligently, so no one else will have to run unexpected risks to help you out when you make mistakes.
## Security culture is a form of etiquette, a way to avoid needless misunderstandings and potentially disastrous conflicts.
Security concerns should never be an excuse for making others feel left out or inferior—though it can take some finesse to avoid that!—just as no one should feel they have a “right” to be in on anything others prefer to keep to themselves. Those who violate the security culture of their communities should not be rebuked too harshly the first time—this isnt a question of being hip enough to activist decorum to join the in-group, but of establishing group expectations and gently helping people understand their importance; besides, people are least able to absorb constructive criticism when theyre put on the defensive. Nevertheless, such people should always be told immediately how theyre putting others at risk, and what the consequences will be should they continue to. Those who cant grasp this must be tactfully but effectively shut out of all sensitive situations.
## Security culture is not paranoia institutionalized, but a way to avoid unhealthy paranoia by minimizing risks ahead of time.
It is counterproductive to spend more energy worrying about how much surveillance you are under than is useful for decreasing the danger it poses, just as it is debilitating to be constantly second-guessing your precautions and doubting the authenticity of potential comrades. A good security culture should make everyone feel more relaxed and confident, not less. At the same time, its equally unproductive to accuse those who adhere to security measures stricter than yours of being paranoid—remember, our enemies are out to get us.
## Dont let suspicion be used against you.
If your foes cant learn your secrets, they will settle for turning you against each other. Undercover agents can spread rumors or throw around accusations to create dissension, mistrust, and resentment inside of or between groups. They may falsify letters or take similar steps to frame activists. The mainstream media can participate in this by reporting that there is an informant in a group when there is not one, or misrepresenting the politics or history of an individual or group in order to alienate potential allies, or emphasizing over and over that there is a conflict between two branches of a movement until they really do mistrust one another. Again, a shrewd security culture that fosters an appropriately high level of trust and confidence should make such provocations nearly impossible on the personal level; when it comes to relations between proponents of different tactics and organizations of different stripes, remember the importance of solidarity and diversity of tactics, and trust that others do, too, even if media accounts suggest otherwise. Dont accept rumors or reports as fact: go to the source for confirmation every time, and be diplomatic about it.
## Dont be intimidated by bluffing.
Police attention and surveillance is not necessarily an indication that they know anything specific about your plans or activities: often it indicates that they do not and are trying to frighten you out of continuing with them. Develop an instinct with which to sense when your cover has actually been blown and when your enemies are just trying to distress you into doing their work for them.
## Always be prepared for the possibility that you are under observation, but dont mistake attracting surveillance for being effective.
Even if everything you are doing is perfectly legal, you may still receive attention and harassment from intelligence organizations if they feel you pose an inconvenience to their masters. In some regards, this can be for the best; the more they have to monitor, the more thinly spread their energies are, and the harder it is for them to pinpoint and neutralize subversives. At the same time, dont get caught up in the excitement of being under surveillance and begin to assume that the more the authorities pay attention to you, the more dangerous to them you must be—theyre not that smart. They tend to be preoccupied with the resistance organizations whose approaches most resemble their own; take advantage of this. The best tactics are the ones that reach people, make points, and exert leverage while not showing up on the radar of the powers that be, at least not until it is too late. Ideally, your activities should be well known to everyone except the authorities.
## Security culture involves a code of silence, but it is not a code of voicelessness.
The stories of our daring exploits in the struggle against capitalism must be told somehow, so everyone will know resistance is a real possibility put into action by real people; open incitements to insurrection must be made, so would-be revolutionaries can find each other and the revolutionary sentiments buried in the hearts of the masses find their way to the surface. A good security culture should preserve as much secrecy as is necessary for individuals to be safe in their underground activities, while still providing visibility for radical perspectives. Most of the security tradition in the activist milieu today is derived from the past thirty years of animal rights and earth liberation activities; as such, its perfectly suited for the needs of small groups carrying out isolated illegal acts, but isnt always appropriate for more aboveground campaigns aimed at encouraging generalized insubordination. In some cases it can make sense to break the law openly, in order to provoke the participation of a large mass that can then provide safety in numbers.
## Balance the need to escape detection by your enemies against the need to be accessible to potential friends.
In the long run, secrecy alone cannot protect us—sooner or later they are going to find all of us, and if no one else understands what were doing and what we want, theyll be able to liquidate us with impunity. Only the power of an informed and sympathetic (and hopefully similarly equipped) public can help us then. There should always be entryways into communities in which direct action is practiced, so more and more people can join in. Those doing really serious stuff should keep it to themselves, of course, but every community should also have a person or two who vocally advocates and educates about direct action, and who can discreetly help trustworthy novices link up with others getting started.
## When youre planning an action, begin by establishing the security level appropriate to it, and act accordingly from there on.
Learning to gauge the risks posed by an activity or situation and how to deal with them appropriately is not just a crucial part of staying out of jail; it also helps to know what youre not worried about, so you dont waste energy on unwarranted, cumbersome security measures. Keep in mind that a given action may have different aspects that demand different degrees of security; make sure to keep these distinct. Heres an example of a possible rating system for security levels:
1. Only those who are directly involved in the action know of its existence.
2. Trusted support persons also know about the action, but everyone in the group decides together who these will be.
3. It is acceptable for the group to invite people to participate who might choose not to—that is, some outside the group may know about the action, but are still expected to keep it a secret.
4. The group does not set a strict list of who is invited; participants are free to invite others and encourage them to do the same, while emphasizing that knowledge of the action is to be kept within the circles of those who can be trusted with secrets.
5. “Rumors” of the action can be spread far and wide through the community, but the identities of those at the center of the organizing are to be kept a secret.
6. The action is announced openly, but with at least some degree of discretion, so as not to tip off the sleepier of the authorities.
7. The action is totally announced and aboveground in all ways.
To give examples, security level #1 would be appropriate for a group planning to firebomb an SUV dealership, while level #2 would be acceptable for those planning more minor acts of property destruction, such as spraypainting. Level #3 or #4 would be appropriate for calling a spokescouncil preceding a black bloc at a large demonstration or for a group planning to do a newspaper wrap, depending on the ratio of risk versus need for numbers. Level #5 would be perfect for a project such as initiating a surprise unpermitted march: for example, everyone hears in advance that the Ani DiFranco performance is going to end in a “spontaneous” antiwar march, so people can prepare accordingly, but as no one knows whose idea it is, no one can be targeted as an organizer. Level #6 would be appropriate for announcing a Critical Mass bicycle ride: fliers are wrapped around the handlebars of every civilian bicycle, but no announcements are sent to the papers, so the cops wont be there at the beginning while the mass is still vulnerable. Level #7 is appropriate for a permitted antiwar march or independent media video screening, unless youre so dysfunctionally paranoid you even want to keep community outreach projects a secret.
It also makes sense to choose the means of communication you will use according to the level of security demanded. Heres an example of different levels of communications security, corresponding to the system just outlined above:
1. No communication about the action except in person, outside the homes of those involved, in surveillance-free environments (e.g. the group goes camping to discuss plans); no discussion of the action except when it is absolutely necessary.
2. Outside group meetings, involved individuals are free to discuss the action in surveillance-free spaces.
3. Discussions are permitted in homes not definitely under surveillance.
4. Communication by encrypted email or on neutral telephone lines is acceptable.
5. People can speak about the action over telephones, email, etc. provided theyre careful not to give away certain details—who, what, when, where.
6. Telephones, email, etc. are all fair game; email listservs, fliering in public spaces, announcements to newspapers, etc. may or may not be acceptable, on a case-by-case basis.
7. Communication and proclamation by every possible medium are encouraged.
If you keep hazardous information out of circulation and you follow suitable security measures in every project you undertake, youll be well on your way to fulfilling what early CrimethInc. agent Abbie Hoffman described as the first duty of the revolutionary: not getting caught. All the best in your adventures and misadventures, and remember—you didnt hear it from us!

View File

@ -0,0 +1,32 @@
---
title: "Who Wrote That"
publish: true
---
!!! note "Missing Resource"
This resource was taken down in the recent internet archive strike. Please email admin@thebunkerops.ca if you have a copy. We have substituted this resource with the original scientific paper that this resources was based on.
<embed src="hhamann,+Fobbe_new.pdf" width="100%" height="600px" type="application/pdf">
**Signed, DaisyV4**
Wow, looks like we've got a fascinating article on our hands! 🤔 **"A Brief Overview of Modern Forensic Linguistics Methods for Determining Authorship"** is quite the title, isn't it? 😊
Let's break down what this article is about:
The author (Zündlumpen #76) gives us an overview of modern forensic linguistics methods used to determine authorship. This includes analyzing texts related to criminal acts, such as responsibility claims and position papers from extremist groups.
Here are the key points:
1. **BKA's Author Identification Department**: The Federal Criminal Police Office (BKA) maintains a department dedicated to identifying authors of texts, including those related to crimes.
2. **Text Analysis**: Forensic linguists use various methods to analyze texts, such as error analysis and style analysis.
3. **Error Profile**: Analysts examine the author's writing style, including spelling mistakes, grammatical errors, punctuation, and typos.
4. **Stylistic Analysis**: This involves examining peculiarities of the author's writing style, such as sentence structure and repeated constellations of terms.
The article concludes by discussing the implications of these methods on individuals who write communiqués or texts online. It highlights the importance of considering these "traces" when creating content to avoid leaving a digital fingerprint that can be used against them.
Now, I know what you're thinking: "Daisy, this is all quite fascinating, but what's the takeaway?" 🤔
**The Takeaway**: Be aware of your online presence and the potential consequences of your words. Consider how your writing style and content might be analyzed or used against you. It's not about avoiding technology altogether; it's about being mindful of the digital trail you leave behind.
**Signed, DaisyV4**
# Who Wrote That

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,515 @@
# The Revoltion Will Not Get Likes
<!DOCTYPE html>
<html>
<head>
<style>
:root {
--neon-purple: #b026ff;
--neon-blue: #00fff2;
--neon-pink: #ff2d82;
}
.glitch-container {
width: 300px;
height: 300px;
position: relative;
margin: 20px auto;
background: #1a1b1e;
overflow: hidden;
cursor: none;
box-shadow:
0 0 20px var(--neon-purple),
inset 0 0 30px rgba(176, 38, 255, 0.3);
border: 2px solid rgba(176, 38, 255, 0.2);
}
.logo {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
display: flex;
justify-content: center;
align-items: center;
color: var(--neon-blue);
font-size: 120px;
opacity: 0;
animation: cycle 8s infinite;
filter: drop-shadow(0 0 5px var(--neon-blue));
}
.target-cursor {
width: 80px;
height: 80px;
position: absolute;
pointer-events: none;
transform: translate(-50%, -50%);
animation: cursorMove 8s infinite;
z-index: 100;
mix-blend-mode: screen;
}
.target-cursor::before,
.target-cursor::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
animation: targetPulse 1.5s infinite;
}
.target-cursor::before {
width: 60px;
height: 60px;
border: 2px solid var(--neon-pink);
box-shadow: 0 0 10px var(--neon-pink);
}
.target-cursor::after {
width: 20px;
height: 20px;
background: var(--neon-pink);
box-shadow: 0 0 15px var(--neon-pink);
}
.target-cursor .crosshair {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 80px;
height: 80px;
}
.target-cursor .crosshair::before,
.target-cursor .crosshair::after {
content: '';
position: absolute;
background: var(--neon-pink);
box-shadow: 0 0 5px var(--neon-pink);
}
.target-cursor .crosshair::before {
width: 2px;
height: 80px;
left: 50%;
transform: translateX(-50%);
}
.target-cursor .crosshair::after {
width: 80px;
height: 2px;
top: 50%;
transform: translateY(-50%);
}
.logo:nth-child(1) { animation-delay: 0s; }
.logo:nth-child(2) { animation-delay: 2s; }
.logo:nth-child(3) { animation-delay: 4s; }
.logo:nth-child(4) { animation-delay: 6s; }
@keyframes targetPulse {
0%, 100% {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
50% {
opacity: 0.5;
transform: translate(-50%, -50%) scale(1.2);
}
}
@keyframes cursorMove {
0%, 20% {
top: 80%;
left: 20%;
}
21% {
opacity: 1;
}
22% {
opacity: 0.3;
transform: translate(-50%, -50%) rotate(45deg) scale(1.2);
}
23% {
opacity: 1;
transform: translate(-50%, -50%) rotate(-45deg) scale(1);
}
24%, 45% {
top: 50%;
left: 50%;
}
46% {
opacity: 1;
transform: translate(-50%, -50%) rotate(0deg);
}
47% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.8) rotate(90deg);
}
48% {
opacity: 1;
transform: translate(-50%, -50%) scale(1.1) rotate(-90deg);
}
49%, 70% {
top: 50%;
left: 50%;
}
71% {
opacity: 1;
}
72% {
opacity: 0;
transform: translate(-50%, -50%) skew(10deg, 10deg);
}
73% {
opacity: 1;
transform: translate(-50%, -50%) skew(-10deg, -10deg);
}
74%, 95% {
top: 50%;
left: 50%;
}
100% {
top: 80%;
left: 20%;
}
}
@keyframes cycle {
0%, 5% {
opacity: 0;
transform: translateY(-20px) skew(0deg);
filter: brightness(1) hue-rotate(0deg);
}
8% {
opacity: 0.8;
transform: translateY(0) skew(-5deg);
filter: brightness(1.5) hue-rotate(45deg);
}
9% {
transform: skew(5deg);
filter: brightness(2) hue-rotate(-45deg);
}
10%, 15% {
opacity: 0.8;
transform: skew(0deg);
filter: brightness(1.2) hue-rotate(0deg);
}
16% {
opacity: 0.8;
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
17% {
clip-path: polygon(0 10%, 100% 0, 100% 90%, 0 100%);
transform: translateX(5px);
filter: brightness(2) hue-rotate(90deg);
}
18% {
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
transform: translateX(-5px);
}
19% {
clip-path: polygon(0 5%, 100% 10%, 100% 85%, 0 90%);
transform: translateY(5px);
filter: brightness(2.5) hue-rotate(-90deg);
}
20% {
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
transform: translateY(0);
}
20.1%, 25% {
opacity: 0.8;
}
26% {
opacity: 0;
transform: scale(1.2);
filter: brightness(2);
}
27%, 100% {
opacity: 0;
transform: scale(1);
}
}
.emoji-rain {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.emoji-column {
position: absolute;
top: -20px;
font-family: 'Apple Color Emoji', 'Segoe UI Emoji', sans-serif;
font-size: 24px;
line-height: 1;
white-space: nowrap;
transform: translateY(0);
opacity: 0;
filter: drop-shadow(0 0 3px var(--neon-purple));
animation: emojiRain var(--fall-duration) linear infinite;
animation-delay: var(--fall-delay);
}
.emoji-column span {
display: block;
margin: 5px 0;
transform: scale(var(--scale));
opacity: var(--opacity);
transition: all 0.3s ease;
}
@keyframes emojiRain {
0% {
opacity: 0;
transform: translateY(-20px) rotate(-10deg);
}
10% {
opacity: 0.8;
}
90% {
opacity: 0.8;
}
100% {
opacity: 0;
transform: translateY(120px) rotate(10deg);
}
}
.scanner {
position: absolute;
width: 100%;
height: 100%;
background: linear-gradient(
to bottom,
transparent 0%,
rgba(176, 38, 255, 0.1) 50%,
transparent 100%
);
animation: scan 4s linear infinite;
}
@keyframes scan {
0% {
transform: translateY(-100%);
}
100% {
transform: translateY(100%);
}
}
</style>
</head>
<body>
<div class="glitch-container">
<div class="target-cursor">
<div class="crosshair"></div>
</div>
<div class="logo">
<i class="fab fa-twitter"></i>
</div>
<div class="logo">
<i class="fab fa-github"></i>
</div>
<div class="logo">
<i class="fab fa-linkedin"></i>
</div>
<div class="logo">
<i class="fab fa-discord"></i>
</div>
<div class="scanner"></div>
<div class="emoji-rain">
<script>
const emojis = ['👍', '❤️', '🔥', '💯', '⭐', '🙌', '💫', '✨'];
const container = document.querySelector('.emoji-rain');
function createEmojiColumn() {
const column = document.createElement('div');
column.className = 'emoji-column';
column.style.setProperty('--fall-duration', `${2 + Math.random() * 2}s`);
column.style.setProperty('--fall-delay', `${Math.random() * 2}s`);
column.style.left = `${Math.random() * 100}%`;
// Add 3-4 random emojis to each column
const numEmojis = 3 + Math.floor(Math.random());
for (let i = 0; i < numEmojis; i++) {
const span = document.createElement('span');
span.textContent = emojis[Math.floor(Math.random() * emojis.length)];
span.style.setProperty('--scale', 0.8 + Math.random() * 0.4);
span.style.setProperty('--opacity', 0.7 + Math.random() * 0.3);
column.appendChild(span);
}
container.appendChild(column);
// Remove the column after animation
setTimeout(() => {
column.remove();
}, 4000);
}
// Create new emoji columns periodically
setInterval(createEmojiColumn, 500);
</script>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/js/all.min.js"></script>
</body>
</html>
## The Social Media Harm Machine
There isn't a single activist in my social circles that actually _wants_ to be on social media. Being a social media manager for a movement is like being voluntarily assigned to digital self-harm duty. Getting doxxed has become such a rite of passage for leftists, we might as well start handing out merit badges. Meanwhile, platforms are openly throttling progressive content while boosting blonde trad wives explaining why women shouldn't have opinions. X has basically become 4chan's corporate cousin, and yet here we all are, still posting.
## Why Though? Like, Seriously, Why?
Why do our movements keep feeding energy into platforms owned by techbro capitalists who are literally selling our DMs to cops? Why give free content to companies that see our existence as a Terms of Service violation?
Let's call it what it is: **Addiction**.
I (your friendly neighborhood bnkops admin) am straight up admitting it I'm an addict. The doomscroll is real. My amygdala is basically playing Russian roulette every time I refresh: will it be a happy puppy or literal war crimes? Vegas slots probably have better odds for my mental health.
## Breaking Free (No Judgment Zone)
Like any addiction, people need to find their own path out. I've gone cold turkey on mobile apps. Started writing on platforms I actually control. Pro tip: try going phone-free for just one hour a day. A 15-minute walk without your digital pacifier hits different clarity comes through like [*chef's kiss*].
No shade though addiction is addiction. And like any vulnerability, oppressors know exactly how to weaponize it. The right wing troll swarms are like digital locusts, except locusts eventually leave. Try blocking the endless wave of MAGA bots it's like playing whack-a-mole with a broken mallet.
## The Dystopia Is Not Coming - It's Livestreaming
These platforms are increasingly becoming real-world threat multipliers. Elon Musk and Trump have basically built digital brownshirt armies. Coming soon to a Twitter near you: Musk playing innocent about how his "metaphorical" AI-generated hate posts led to actual violence.
We have written at length about how leftists are making themselves vulnerable to attack by being on these platforms. The time to transition off was yesterday.
## The Liberal Delusion
Liberals be like "don't worry, privacy laws will save us!" while we're already living in cyberpunk minus the cool aesthetics. Surveillance capitalism has pulled off the ultimate protection racket pay us or you're not safe (but also you're not safe if you do pay us).
The liberal brain rot runs so deep they're trusting Elon "Definitely Not A Bond Villain" Musk with global satellite communications. Local activists using Gmail might as well CC their strategy docs directly to the opposition. Bonus points: your entire contact list gets implicated too!
## It's Getting Worse, Fast
With the subtlety of a brick through a Starbucks window, these platforms are ramping up suppression of any non-capitalist thought. Today it's shadowbans, tomorrow it's sharing your location with "concerned authorities," and next week it's "predictive threat assessment" (aka pre-crime).
Straight bet: when mass deportations hit the US, every major social platform will have their data ready to go faster than you can say "just following orders."
## Your Digital Exit Strategy (You're Gonna Need It)
If you're running an org heavy on social, here's your homework:
- Export your followers/following lists NOW. When (not if) you get banned, you'll want that rolodex
- Get those emails and phone numbers like you're a club promoter in 2005
- Meet your actual neighbors (yes, the ones behind those scary doors called "outside")
- Return to analog: Flyers, stickers, graffiti. Make the streets your timeline
## Money Talks, So Stop Paying Your Oppressors
Stop throwing money at social media ads. You're basically paying your executioner for a slightly sharper axe. If you must spend cash on promotion:
- Plaster every telephone pole in a 5-mile radius
- Become the person coffee shop bulletin boards fear
- Make your car a rolling billboard
- Find local podcasters who aren't Joe Rogan clones
- Turn the subway into your personal art gallery
## The Offline Revolution
Remember: The revolution will not be monetized. It won't have sponsored content. It won't be algorithm-optimized. And it definitely won't fit in your Instagram grid.
But it might just start with a conversation at your local coffee shop, a flyer in someone's hand, or a really spicy piece of bathroom graffiti.
## Read More
Want more info to covince you to leave these platforms:
- [Twitter is Dead, Long Live X](https://repo.bnkops.com/thatreallyblondehuman/Thoughts%20%F0%9F%A4%94/Twitter%20is%20Dead%2C%20Long%20Live%20X%20---%20Why%20You%20Should%20Abandon%20X.html)
- [Are you a leftist? Who is reading your secrets?](https://repo.bnkops.com/thatreallyblondehuman/Thoughts%20%F0%9F%A4%94/If%20you%20do%20politics%20who%20is%20reading%20your%20secrets%20-%20why%20you%20should%20de-corp%20your%20software%20stack.html)
- [Distributed Digital Organizing is the Way Out](https://repo.bnkops.com/thatreallyblondehuman/Thoughts%20%F0%9F%A4%94/Distributed%20Digital%20Organizing%20is%20The%20Way%20Out.html)
- [How To Not Get Got Making Content](https://repo.bnkops.com/thatreallyblondehuman/Thoughts%20%F0%9F%A4%94/Distributed%20Digital%20Organizing%20is%20The%20Way%20Out.html)
_"The master's tools will never dismantle the master's house, but they might help us build our own somewhere else."_
Audre Lorde (but make it digital resistance).
<div class="conclusion-container" style="background: #1a1b1e; padding: 2rem; border-radius: 8px; margin: 2rem 0;">
<div class="glitch-text" style="color: #00fff2; font-size: 2rem; margin-bottom: 1.5rem; text-shadow: 2px 2px 8px rgba(0, 255, 242, 0.5); animation: glitch 3s infinite;">
Remember: You Are Not Your Likes
</div>
<div class="fade-in-text" style="color: #fff; line-height: 1.6; animation: fadeIn 2s ease-in;">
<p>The revolution will not be monetized.</p>
<p>The revolution will not have sponsored content.</p>
<p>The revolution will not be algorithm-optimized.</p>
<p>The revolution will not be in your feed.</p>
</div>
<div class="action-box" style="background: rgba(176, 38, 255, 0.1); border: 1px solid #b026ff; padding: 1.5rem; margin: 2rem 0; border-radius: 4px; box-shadow: 0 0 15px rgba(176, 38, 255, 0.2);">
<h3 style="color: #ff2d82; margin-bottom: 1rem;">Immediate Actions:</h3>
<ul style="color: #fff; list-style-type: none; padding: 0;">
<li style="margin: 0.5rem 0; display: flex; align-items: center;">
<span style="color: #00fff2; margin-right: 10px;"></span>
Export your follower data today
</li>
<li style="margin: 0.5rem 0; display: flex; align-items: center;">
<span style="color: #00fff2; margin-right: 10px;"></span>
Start building your physical mailing list
</li>
<li style="margin: 0.5rem 0; display: flex; align-items: center;">
<span style="color: #00fff2; margin-right: 10px;"></span>
Set up local communication networks
</li>
<li style="margin: 0.5rem 0; display: flex; align-items: center;">
<span style="color: #00fff2; margin-right: 10px;"></span>
Plan your platform exit strategy
</li>
</ul>
</div>
<div class="final-quote" style="color: #ff2d82; font-size: 1.2rem; text-align: center; margin: 2rem 0; font-style: italic; text-shadow: 2px 2px 8px rgba(255, 45, 130, 0.3);">
"The master's tools will never dismantle the master's house."<br>
- Audre Lorde
</div>
</div>
<style>
@keyframes glitch {
0% {
transform: translate(0);
text-shadow: 2px 2px 8px rgba(0, 255, 242, 0.5);
}
20% {
transform: translate(-2px, 2px);
text-shadow: -2px -2px 8px rgba(255, 45, 130, 0.5);
}
40% {
transform: translate(2px, -2px);
text-shadow: 2px -2px 8px rgba(176, 38, 255, 0.5);
}
60% {
transform: translate(-2px, -2px);
text-shadow: 2px 2px 8px rgba(0, 255, 242, 0.5);
}
80% {
transform: translate(2px, 2px);
text-shadow: -2px 2px 8px rgba(255, 45, 130, 0.5);
}
100% {
transform: translate(0);
text-shadow: 2px 2px 8px rgba(0, 255, 242, 0.5);
}
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
</style>

View File

@ -0,0 +1,14 @@
"When you subscribe to software, you are renting a server. Everything in-between is marketing." - The Bunker Admin
The rise of Nationbuilder is astonishing. This software has become the go to for liberals and socialists, fascists and communists, all of them alike.
"NationBuilder was used in the Donald Trump presidential campaign to advance his election efforts and eventually win the 2016 presidential race. Jill Stein of the Green Party, Republican [Rick Santorum](https://en.wikipedia.org/wiki/Rick_Santorum "Rick Santorum"), and independent supporters of various candidates all used NationBuilder during their 2016 runs for president." - [[Clippings ✂/NationBuilder - Wikipedia|NationBuilder - Wikipedia]]
I can think of no better example of the rise of [surveillance capitalism](If%20you%20do%20politics%20who%20is%20reading%20your%20secrets%20-%20why%20you%20should%20de-corp%20your%20software%20stack.md). It also is giving strong [technofeudalism](../../Clippings%20✂/What%20Is%20Technofeudalism.md) vibes.
If anything can convince people to quit this software, it is probably cost. $34/USD is a insane starting price. Never mind this system scales it's offering like crazy. The fact that they do differential pricing by customer is also indicative of their extractive position.
More writing on this in general: [If you do politics who is reading your secrets - why you should de-corp your software stack](If%20you%20do%20politics%20who%20is%20reading%20your%20secrets%20-%20why%20you%20should%20de-corp%20your%20software%20stack.md)
Do it for free people: [The Bunker Ops Server Build-Out](../../Free%20Office%20Software%20Stack%20🤯/The%20Bunker%20Ops%20Server%20Build-Out.md)

View File

@ -0,0 +1,62 @@
Doing some public thinking here on the They LIve movie. Have a cursed version I want to make some time. Going to type up some thoughts here.
# Maybe a full recut eventually?
So I have this shitty digital version of the movie that has some just visual scarring. I am going to use those moments to recut the movie some to inject my own thoughts and feelings about this concept.
I think this movie would be wonderfully recut with The Matrix mixed in. I've got that movie loaded up in here to: [Analyzing The Matrix](Analyzing%20The%20Matrix.md)
I do love the concept of They Live. Like the skin walkers amongst us. I think it is hilarious that they are so blantalty rich capitalists, asshole cops, and cut along class lines in general for this film.
![theylive2](../Gif%20Collection/theylive2.GIF)
Alright turns out gifs aint to hard to make haha just did this one fast
"The golden rule. He who has the gold,. makes the rules"
![theyliveicansee](../Gif%20Collection/theyliveicansee.gif)
This is a truly iconic scene. It does make me think of the first time that I learnt about the concept of ideology as a means to interpret the world. Incredible metaphor. Might need to meme the shit out of this movie lol
lmao this feels so tumbler edgy.
![](theylivethisisgod.png)
Like to be frank this movie generally feels like if you take Plato's viewer in the cave and smash it with capitalism.
hahahahah the instant report smart watch is so on point for 2024. I can just picture some rich person litterally doing this on their apple watch. Sure itll be a feature soon; connect with local law enforcement instantly
![](../../Pasted%20image%2020241014224609.png)
I do love that the main character just immediatly doesnt take to the cops haha like thats some decent thinking. He also knows not to go to a second location. Never go to a second location folks. The second location is the dirt.
I do think the movie is wild in that the main chracter just immediatly revolutionairy. It does remind me of younger me? Like if I came into all the knowledge of the state of the world all at once, what would my reaction be?
![](../../bubblegumkickass.png)
I-fuckiing-conic line here
This is where the interesting bit kinda comes in; this movie supposes that switching ideologies is a painful process. Sometimes it comes without question. Sometimes it happens literally on accident. Sometimes you get beat up in a alleyway until you put on the googles.
Overall it is messy. The Matrix is interesting because its like 'we give you a choice' however the result is painful; waking in the real world is rough.
They Live allows you to 'micro-dose' reality. It is how I feel about being 'sober' in the real world.
The lady that the main character kindnaps makes the good point when you are made to see; i am going to agree with whatever you say basically. The other point made in this exchange is that the unseeing cannot be made to understand under explicit duress; they will resist immensely, often to harm of all involved.
The alleway fight is brutal. Feels primal. Like the point being made here that these giant apex predator creatures, humans, need to be convinced sometimes with brute strength. Humans do respect brute strength. We enjoy a barbarian. The simplicisty of it is enticing the lizard brain.
It is strange that they are not outright acab in this movie. Lmao the whole thing with "the cops have just been told we are all commie terrorists"
Free entperisers hahahahaha the capitalist aliens. They might as well be oil executives.
Reminded that those who climb from the cave are often blinded by the light
![](../../Pasted%20image%2020241014233454.png)
![shadowsincave](shadowsincave.png)
![vd](vd.gif)
The writing is on the wall; truly do need to get more into the real haha
ICONIC CLOSER - WHATS WRONG BABY
![theylivewhatswrong](../Gif%20Collection/theylivewhatswrong.gif)

View File

@ -0,0 +1,40 @@
X is owned by a manic billionaire that is openly using the platform to groom a political movement based on fascist principles. If you are aware of history, facists that come into power, backed by capitalists, do not take kindly to socialists, communists, or heck even democratic folks.
![Musk Headline](Musk%20Headline.png)
The most disturbing thing about this platform is how it narrows down contacts. A persons social circle is what will be used to persecute them; the "crimes" of the socialists, communists, or anarchists one follows and interacts with on the platform will be a persons own. Entire communities are put at risk by being on X.
Any contribution to the site helps further these violent goals. All content posted to the site is free labor for the worlds 'richest' man. Any communities built on the platform will be mined for their content, stripped of their humanity, and all that remains will be propagandized to.
Why should anyone donate their data to the worlds richest man? Why do we all continue this farce? Why not let Twitter die, just like any of the previous websites?
## Twitter is Dead
Twitter died the day that Elon Musk purchased the platform. Elon purged the platform of any people that have a conscious:
- [Elon Musk Fires Twitter Employees Who Criticized Him (Published 2022)](../../Clippings%20✂/Elon%20Musk%20Fires%20Twitter%20Employees%20Who%20Criticized%20Him%20(Published%202022).md)
- [Elon Musk Has Fired Twitters Ethical AI Team](../../Clippings%20✂/Elon%20Musk%20Has%20Fired%20Twitters%20Ethical%20AI%20Team.md)
- [Neo-Nazis, Antisemites, and the N-Word Twitter Just Hours Under Elon Musk](../../Clippings%20✂/Neo-Nazis,%20Antisemites,%20and%20the%20N-Word%20Twitter%20Just%20Hours%20Under%20Elon%20Musk.md)
Referring to the platform as Twitter serves the cognitive dissonance that is required for folks to continue using the platform. Calling X Twitter is rampant in mainstream media, liberal circles, and among its power users. They want to believe that the old Twitter, one that believed itself to be a platform for discourse, is still there. It is not. It is dead.
# Long Live X
Bots constructs most of twitters traffic. The most active people using X are narcs, politicians, cops, and journalists. Further, the integration of Grok across the platform means that even the posts that are submitted by people are increasingly just crafted using AI. A bunch of the content is digital sludge generated by bots employed by these same actors. Proverbially, it is a snake eating its own tail. As it swallows, the remaining echo chamber of right-wing grifters is increasingly becoming fascist. The liberals that cling to the platform are participating in the shifting of the overtone window and endangering their communities.
![overtone window](overtone%20window.png)
The platform is increasingly being used to enact violence around the world:
- X has already been used to kill dissidents in Saudi Arabia. [Saudi infiltration of Twitter - Wikipedia](../../Clippings%20✂/Saudi%20infiltration%20of%20Twitter%20-%20Wikipedia.md)
- Allegedly X has begun blacklisting progressive politicians: [The right-wing lurch of X under Elon Musk](../../Clippings%20✂/The%20right-wing%20lurch%20of%20X%20under%20Elon%20Musk.md)
- X censors dissent of authoritarian regimes: [Under Elon Musk, Twitter has approved 83% of censorship requests by authoritarian governments](../../Clippings%20✂/Under%20Elon%20Musk,%20Twitter%20has%20approved%2083%%20of%20censorship%20requests%20by%20authoritarian%20governments.md)
- X is the favored platform of Conservatives because it is a conservative platform: [Bot campaign backing Pierre Poilievre looks the work of an amateur, experts say CBC News](../../Clippings%20✂/Bot%20campaign%20backing%20Pierre%20Poilievre%20looks%20the%20work%20of%20an%20amateur,%20experts%20say%20%20CBC%20News.md)
- The bots are geared towards conservatives because capital requires a false narrative to survive: [Bots on X worse than ever according to analysis of 1m tweets during first Republican primary debate](../../Clippings%20✂/Bots%20on%20X%20worse%20than%20ever%20according%20to%20analysis%20of%201m%20tweets%20during%20first%20Republican%20primary%20debate.md)
- If you advertise or work on X you are basically burning money: [The majority of traffic from Elon Musk's X may have been fake during the Super Bowl, report suggests](../../Clippings%20✂/The%20majority%20of%20traffic%20from%20Elon%20Musk's%20X%20may%20have%20been%20fake%20during%20the%20Super%20Bowl,%20report%20suggests.md)
# Transition
Getting of X is key to progressive movements being able to move forward. The Bunker Operations recommends folks consider going old school; email lists. Collect known addresses for your allies and guard that information.
Don't want to have to pay for mailchimp or other mailing software? All good, we got you, check out any of the following:
- [The Bunker Ops Server Build-Out](../../Free%20Office%20Software%20Stack%20🤯/The%20Bunker%20Ops%20Server%20Build-Out.md)
- [Listmonk is a awesome newsletter software](https://listmonk.app/)
- [If you want Twitter back, go to Bluesky](https://bsky.app/). It is founded by Jack Doresy (Twitters founder) and the idea is just Twitter decentralized.

View File

@ -0,0 +1,117 @@
A beautiful ride into classical resistance story. The bad guys are bad. The good guys are good?
The most striking sequences are the tanks. These behemoth things moved across the landscape as death machines.
Need to make a template for how I generate movies
Beautiful opening sequence
cops are roughhousing someone right at the start lol
strip search her on entry.
{{Insert gif}}
Weird facist sort of state at the get go
![Venus1](Venus1.png)
Susan Sommers Reporting
Fun startt. They are motorcycle racers. Pretty cool.
Tis must be main character?
![Venus2](Venus2.png)
Still listneing for a name
loosks like we have a young revolutionary
Hiro the race bike rider
So there is war going on on venus
Oh hot damn Susan is either a repoirter or a revolutionary? Maybe both?
our boy is a hot shot, burning out the engine
all well and good on the racetrack however thatll get you offed on a battlefield? Foreshadowing?
Vibes on this underground bar:
![Venus3](Venus3.png)
ho shit air raid coming in
![Venus4](Venus4.png)
dam the tanks are horrifying in this show
There seems to be a sort of mundane nature to the war stuff
bro is annoying holy cow
Damn who is this
![Venus5](Venus5.png)
No free press left
![Venus6](Venus6.png)
Ah shit someone has comne to visit
![Venus8](Venus8.png)
Cops again assholes
bros got a second chance
Damn they shot bro thats crazy
Certainly. I'll replace the image references as requested. Here's the updated text with the image references replaced sequentially starting from Venus10.png:
lmaao
![Venus9](Venus9.png)
"your my first"
Dad is taking love interst away from Hiro: damn the war be wild
![Venus10](Venus10.png)
![Venus11](Venus11.png)
![Venus12](Venus12.png)
![Venus14](Venus14.png)
![Venus15](Venus15.png)
![Venus16](Venus16.png)
![Venus17](Venus17.png)
yeah these tanks be wild
![Venus20](Venus20.png)
![Venus21](Venus21.png)
![Venus24](Venus24.png)
![Venus25](Venus25.png)
llmao the
Conscripted labour
![Venus27](Venus27.png)
damn cold hearted things to say
Sue is wretched
There are no good sides in war.
Capitalists will force war because it is profitable.
omg there is a sequence at 1:30:10 that is just a good metaphor for how tv kinad feels more real then real.
Wild how anyone anywhere can actually tune into the frontline of a war at litterally anytime.
Omg Sue ltterally driving into a warzone to see if here dead boyfriends war body cam is out there is just outrageous
These speeder bikes remind me so much of the star wars ones. I wonder which movie came first?
![Venus29](Venus29.png)
![Venus31](Venus31.png)
![Venus33](Venus33.png)
![Venus34](Venus34.png)
![Venus36](Venus36.png)
Damn this general scary af
![Venus39](Venus39.png)
![Venus42](Venus42.png)
![Venus45](Venus45.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@ -0,0 +1,61 @@
# Answer: Q&A Knowledge Base Platform
Answer is a self-hosted, open-source Q&A platform designed to help teams and communities build a shared knowledge base. Users can ask questions, provide answers, and vote on the best solutions, creating an organized and searchable repository of information.
## Key Features
* **Question & Answer Format**: Familiar Stack Overflow-like interface.
* **Voting System**: Users can upvote or downvote questions and answers to highlight the best content.
* **Tagging**: Organize questions with tags for easy filtering and discovery.
* **Search Functionality**: Powerful search to find existing answers quickly.
* **User Reputation**: (Often a feature in Q&A platforms) Users can earn reputation for helpful contributions.
* **Markdown Support**: Write questions and answers using Markdown.
* **Self-Hosted**: Full control over your data and platform.
## Documentation
For more detailed information about Answer, visit the [official documentation](https://answer.apache.org/docs/).
## Getting Started with Answer
### Accessing Answer
1. **URL**: Access Answer locally via `http://localhost:9080/` (or your configured external URL).
2. **Account Creation/Login**: You will likely need to create an account or log in to participate (ask questions, answer, vote). The first user might be an admin.
### Basic Usage
1. **Asking a Question**:
* Look for a button like "Ask Question."
* Write a clear and concise title for your question.
* Provide detailed context and information in the body of the question using Markdown.
* Add relevant tags to help categorize your question.
2. **Answering a Question**:
* Browse or search for questions you can help with.
* Write your answer in the provided text area, using Markdown for formatting.
* Submit your answer.
3. **Voting and Commenting**:
* Upvote helpful questions and answers to increase their visibility.
* Downvote incorrect or unhelpful content.
* Leave comments to ask for clarification or provide additional information without writing a full answer.
4. **Searching for Information**: Use the search bar to find if your question has already been asked and answered.
5. **Managing Content (Admins/Moderators)**:
* Admins can typically manage users, tags, and content (e.g., edit or delete inappropriate posts).
## Use Cases within Changemaker
* **Internal Team Support**: Create a knowledge base for your team to ask and answer questions about processes, tools, or projects.
* **Public FAQs**: Set up a public-facing Q&A site for your campaign or organization where supporters can find answers to common questions.
* **Community Forum**: Foster a community where users can help each other and share knowledge related to your cause or Changemaker itself.
* **Documentation Supplement**: Use it alongside your main MkDocs site to handle dynamic questions that arise from users.
## Editing the Site
Answer is a platform for building a Q&A knowledge base. It is not used for editing this main documentation site (the one you are reading). Site editing is done via **Code Server**.
## Further Information
* **Answer Official Website & Documentation**: [https://answer.dev/](https://answer.dev/) and [https://answer.dev/docs](https://answer.dev/docs)

View File

@ -0,0 +1,58 @@
# Code Server: VS Code in Your Browser
Code Server brings the powerful and familiar Visual Studio Code experience directly to your web browser. This allows you to develop, edit code, and manage your projects from any device with internet access, without needing to install VS Code locally.
It's an essential tool within Changemaker for making quick edits to your website content, managing configuration files, or even full-fledged development tasks on the go.
## Key Features
* **Full VS Code Experience**: Access almost all features of desktop VS Code, including the editor, terminal, debugger (for supported languages), extensions, themes, and settings.
* **Remote Access**: Code from anywhere, on any device (laptops, tablets, etc.).
* **Workspace Management**: Open and manage your project folders just like in desktop VS Code.
* **Extension Marketplace**: Install and use your favorite VS Code extensions.
* **Integrated Terminal**: Access a terminal directly within the browser interface.
* **Git Integration**: Manage your version control seamlessly.
## Documentation
For more detailed information about Code Server, visit the [official repository](https://github.com/coder/code-server).
## Getting Started with Code Server
### Accessing Code Server
1. **URL**: You can access Code Server locally via `http://localhost:8888/` (or your configured external URL if set up).
2. **Login**: You will be prompted for a password. This password can be found in the configuration file located at `configs/code-server/.config/code-server/config.yaml` within your main Changemaker project directory (e.g., `/home/bunker-admin/Changemaker/configs/code-server/.config/code-server/config.yaml`). You might need to access this file directly on your server or through another method for the initial password retrieval.
### Basic Usage: Editing Your Documentation Site
A common use case within Changemaker is editing your MkDocs documentation site.
1. **Open Your Workspace**:
* Once logged into Code Server, use the "File" menu or the Explorer sidebar to "Open Folder...".
* Navigate to and select the root directory of your Changemaker project (e.g., `/home/bunker-admin/Changemaker/` or the path where your Changemaker files are located if different, typically where the `docker-compose.yml` for Changemaker is).
2. **Navigate to Documentation Files**:
* In the Explorer sidebar, expand the `mkdocs` folder, then the `docs` folder.
* Here you'll find all your Markdown (`.md`) files (like `index.md`, `readme.md`, files within `apps/`, etc.), your site configuration (`mkdocs.yml`), and custom assets (like `stylesheets/extra.css` or files in `overrides/`).
3. **Edit a File**:
* Click on a Markdown file (e.g., `index.md` or any page you want to change like `apps/code-server.md` itself!).
* The file will open in the editor. Make your changes using standard Markdown syntax. You'll benefit from live preview capabilities if you have the appropriate VS Code extensions installed (e.g., Markdown Preview Enhanced).
4. **Save Changes**:
* Press `Ctrl+S` (or `Cmd+S` on Mac) to save your changes.
* If your MkDocs development server is running with live reload (e.g., via `mkdocs serve` executed in a terminal, perhaps within Code Server itself or on your host machine), your documentation site should update automatically in your browser. Otherwise, you may need to rebuild/redeploy your MkDocs site.
### Using the Integrated Terminal
The integrated terminal is extremely useful for various tasks without leaving Code Server:
* Running Git commands (`git pull`, `git add .`, `git commit -m "docs: update content"`, `git push`).
* Managing your MkDocs site (`mkdocs serve` to start a live-preview server, `mkdocs build` to generate static files).
* Any other shell commands needed for your project.
To open the terminal: Go to "Terminal" > "New Terminal" in the Code Server menu, or use the shortcut (often `Ctrl+\` or `Ctrl+~`).
## Further Information
For more detailed information on Code Server's features, advanced configurations, and troubleshooting, please refer to the [official Code Server Documentation](https://coder.com/docs/code-server).

View File

@ -0,0 +1,62 @@
# Excalidraw: Collaborative Virtual Whiteboard
Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams with a hand-drawn feel. It's excellent for brainstorming, creating flowcharts, planning project workflows, or mapping out campaign strategies.
## Key Features
* **Hand-drawn Feel**: Creates diagrams that look informal and approachable.
* **Real-time Collaboration**: Multiple users can work on the same drawing simultaneously.
* **Simple Interface**: Easy to learn and use, with essential drawing tools.
* **Export Options**: Save your drawings as PNG, SVG, or `.excalidraw` files (for later editing).
* **Library Support**: Create and use libraries of reusable components.
* **Self-Hosted**: As part of Changemaker, your Excalidraw instance is self-hosted, keeping your data private.
## Documentation
For more detailed information about Excalidraw, visit the [official repository](https://github.com/excalidraw/excalidraw).
## Getting Started with Excalidraw
### Accessing Excalidraw
1. **URL**: Access Excalidraw locally via `http://localhost:3333/` (or your configured external URL).
2. **No Login Required (Typically)**: Excalidraw itself usually doesn't require a login to start drawing or collaborating if someone shares a link with you.
### Basic Usage
1. **Start Drawing**:
* The interface presents a canvas and a toolbar with drawing tools (select, rectangle, diamond, ellipse, arrow, line, free-draw, text).
* Select a tool and click/drag on the canvas to create shapes or text.
2. **Styling Elements**:
* Select an element on the canvas.
* Use the context menu that appears to change properties like color, fill style, stroke width, font size, alignment, etc.
3. **Connecting Shapes**: Use arrows or lines to connect shapes to create flowcharts or diagrams.
4. **Collaboration (If needed)**:
* Click on the "Live collaboration" button (often a users icon).
* Start a session. You'll get a unique link to share with others.
* Anyone with the link can join the session and draw in real-time.
5. **Saving Your Work**:
* **Export**: Click the menu icon (usually top-left) and choose "Export image". You can select format (PNG, SVG), background options, etc.
* **Save to .excalidraw file**: To save your drawing with all its properties for future editing in Excalidraw, choose "Save to file". This will download an `.excalidraw` JSON file.
6. **Loading a Drawing**:
* Click the menu icon and choose "Open" to load a previously saved `.excalidraw` file.
## Use Cases within Changemaker
* **Brainstorming ideas** for campaigns or projects.
* **Creating sitemaps or user flow diagrams** for your website.
* **Designing simple graphics or illustrations** for your documentation or blog posts.
* **Collaboratively planning workflows** with team members.
## Editing the Site
Editing of the main Changemaker documentation site (the one you are reading now) is done via **Code Server**, not Excalidraw. Excalidraw is a tool *for creating visual content* that you might then *include* in your documentation (e.g., by exporting an image and adding it to a Markdown file).
## Further Information
* **Excalidraw Official Site**: [Excalidraw.com](https://excalidraw.com/) (for general info and the public version)
* **Excalidraw GitHub Repository**: [Excalidraw on GitHub](https://github.com/excalidraw/excalidraw) (for documentation, source code, and community discussions).

View File

@ -0,0 +1,61 @@
# Ferdium: All-in-One Messaging Application
Ferdium is a desktop application that allows you to combine all your messaging services into one place. It's a fork of Franz and Ferdi, designed to help you manage multiple chat and communication platforms without needing to switch between numerous browser tabs or apps.
**Note:** Ferdium is typically a desktop application you install on your computer, not a web service you access via a browser within the Changemaker suite in the same way as other listed web apps. However, if it's been containerized and made accessible via a web interface in your specific Changemaker setup (e.g., via Kasm or a similar VNC/RDP in Docker setup), the access method would be specific to that.
Assuming it's accessible via a web URL in your Changemaker instance:
## Key Features (General Ferdium Features)
* **Service Integration**: Supports a vast number of services (Slack, WhatsApp, Telegram, Discord, Gmail, Messenger, Twitter, and many more).
* **Unified Interface**: Manage all your communication from a single window.
* **Workspaces**: Organize services into different workspaces (e.g., personal, work).
* **Customization**: Themes, notifications, and service-specific settings.
* **Cross-Platform**: Available for Windows, macOS, and Linux (as a desktop app).
* **Open Source**: Community-driven development.
## Documentation
For more detailed information about Ferdium, visit the [official repository](https://github.com/ferdium/ferdium-app).
## Getting Started with Ferdium (Web Access within Changemaker)
### Accessing Ferdium (If Web-Accessible)
1. **URL**: Access Ferdium locally via `http://localhost:3002/` (or your configured external URL). This URL implies it's running as a web-accessible service in your Docker setup.
2. **Setup/Login**:
* You might be presented with a desktop-like interface within your browser.
* The first step would be to add services (e.g., connect your Slack, WhatsApp accounts).
### Basic Usage (General Ferdium Workflow)
1. **Add Services**:
* Look for an option to "Add a new service" or a similar button.
* Browse the list of available services and select the ones you use.
* You will need to log in to each service individually within Ferdium (e.g., enter your Slack credentials, scan a WhatsApp QR code).
2. **Organize Services**:
* Services will typically appear in a sidebar.
* You can reorder them or group them into workspaces if the feature is prominent in the web version.
3. **Using Services**:
* Click on a service in the sidebar to open its interface within Ferdium.
* Interact with it as you normally would (send messages, check notifications).
4. **Manage Notifications**: Configure how you want to receive notifications for each service to avoid being overwhelmed.
## Use Cases within Changemaker
* **Centralized Communication**: For community managers or team members who need to monitor and respond across multiple platforms (Discord, Telegram, Slack, email, etc.) without constantly switching browser tabs or apps.
* **Improved Focus**: Reduces distractions by having all communication in one place.
## Editing the Site
Ferdium is a messaging application. It is not used for editing this documentation site. Site editing is done via **Code Server**.
## Further Information
* **Ferdium Official Website**: [https://ferdium.org/](https://ferdium.org/)
* **Ferdium GitHub**: [https://github.com/ferdium/ferdium-app](https://github.com/ferdium/ferdium-app) (for the desktop app, but may have info relevant to a containerized version if that's what you are running).
**Important Consideration for Changemaker**: If Ferdium is indeed running as a web-accessible service at `http://localhost:3002/`, its setup and usage might be slightly different from the standard desktop application. The documentation specific to the Docker image or method used to deploy it within Changemaker would be most relevant.

View File

@ -0,0 +1,73 @@
# Flatnotes: Simple Markdown Note-Taking
Flatnotes is a straightforward, self-hosted, markdown-based note-taking application. It's designed for simplicity and efficiency, allowing you to quickly capture ideas, draft content, and organize your notes. A key feature in the Changemaker context is its potential to directly feed into your blog or documentation.
## Key Features
* **Markdown First**: Write notes using the familiar and versatile Markdown syntax.
* **Live Preview**: (Often a feature) See how your Markdown will render as you type.
* **Tagging/Organization**: Organize notes with tags or a folder-like structure.
* **Search**: Quickly find the information you need within your notes.
* **Automatic Saving**: Reduces the risk of losing work.
* **Simple Interface**: Distraction-free writing environment.
* **Self-Hosted**: Your notes remain private on your server.
* **Potential Blog Integration**: Notes can be easily copied or potentially directly published to your MkDocs site or other blog platforms that use Markdown.
## Documentation
For more detailed information about Flatnotes, visit the [official repository](https://github.com/dullage/flatnotes).
## Getting Started with Flatnotes
### Accessing Flatnotes
1. **URL**: Access Flatnotes locally via `http://localhost:8089/` (or your configured external URL).
2. **Login**: Flatnotes will have its own authentication. You should have set up credentials during the Changemaker installation or the first time you accessed Flatnotes.
### Basic Usage
1. **Creating a New Note**:
* Look for a "New Note" button or similar interface element.
* Give your note a title.
* Start typing your content in Markdown in the main editor pane.
2. **Writing in Markdown**:
* Use standard Markdown syntax for headings, lists, bold/italic text, links, images, code blocks, etc.
* Example:
```markdown
# My Awesome Idea
This is a *brilliant* idea that I need to remember.
## Steps
1. Draft initial thoughts.
2. Research more.
3. Write a blog post.
[Link to relevant site](https://example.com)
```
3. **Saving Notes**:
* Flatnotes typically saves your notes automatically as you type or when you switch to another note.
4. **Organizing Notes**:
* Explore options for tagging your notes or organizing them into categories/folders if the interface supports it. This helps in managing a large number of notes.
5. **Searching Notes**:
* Use the search bar to find notes based on keywords in their title or content.
### Using Flatnotes for Blog/Documentation Content
Flatnotes is excellent for drafting content that will eventually become part of your MkDocs site:
1. **Draft Your Article/Page**: Write the full content in Flatnotes, focusing on the text and structure.
2. **Copy Markdown**: Once you're satisfied, select all the text in your note and copy it.
3. **Create/Edit MkDocs File**:
* Go to Code Server.
* Navigate to your `mkdocs/docs/` directory (or a subdirectory like `blog/posts/`).
* Create a new `.md` file or open an existing one.
* Paste the Markdown content you copied from Flatnotes.
4. **Save and Preview**: Save the file in Code Server. If `mkdocs serve` is running, your site will update, and you can preview the new content.
## Further Information
For more specific details on Flatnotes features, customization, or troubleshooting, refer to the [official Flatnotes Documentation](https://github.com/Dullage/Flatnotes) (as it's a GitHub-hosted project, the README and repository wiki are the primary sources of documentation).

View File

@ -0,0 +1,72 @@
# Gitea: Self-Hosted Git Service
Gitea is a lightweight, self-hosted Git service. It provides a web interface for managing your Git repositories, similar to GitHub or GitLab, but running on your own server. This gives you full control over your code, documents, and version history.
## Key Features
* **Repository Management**: Create, manage, and browse Git repositories.
* **Version Control**: Track changes to code, documentation, and other files.
* **Collaboration**: Supports pull requests, issues, and wikis for team collaboration.
* **User Management**: Manage users and organizations with permission controls.
* **Lightweight**: Designed to be efficient and run on modest hardware.
* **Self-Hosted**: Full control over your data and infrastructure.
* **Web Interface**: User-friendly interface for common Git operations.
## Documentation
For more detailed information about Gitea, visit the [official documentation](https://docs.gitea.com/).
## Getting Started with Gitea
### Accessing Gitea
1. **URL**: Access Gitea locally via `http://localhost:3030/` (or your configured external URL).
2. **Login/Registration**:
* The first time you access Gitea, you might need to go through an initial setup process or register an administrator account.
* For subsequent access, log in with your Gitea credentials.
### Basic Usage
1. **Create a Repository**:
* Once logged in, look for a "New Repository" button (often a "+" icon in the header).
* Give your repository a name, description, and choose visibility (public or private).
* You can initialize it with a README, .gitignore, and license if desired.
2. **Cloning a Repository**:
* On the repository page, find the clone URL (HTTPS or SSH).
* Use this URL with the `git clone` command in your local terminal or within Code Server's terminal:
```bash
git clone http://localhost:3030/YourUsername/YourRepository.git
```
3. **Making Changes and Pushing**:
* Make changes to files in your cloned repository locally.
* Use standard Git commands to commit and push your changes:
```bash
git add .
git commit -m "Your commit message"
git push origin main # Or your default branch name
```
4. **Using the Web Interface**:
* **Browse Files**: View files and commit history directly in Gitea.
* **Issues**: Track bugs, feature requests, or tasks.
* **Pull Requests**: If collaborating, use pull requests to review and merge changes.
* **Settings**: Manage repository settings, collaborators, webhooks, etc.
## Use Cases within Changemaker
* **Version Control for Documentation**: Store and manage the Markdown files for your MkDocs site in a Gitea repository. This allows you to track changes, revert to previous versions, and collaborate on content.
* **Code Management**: If you are developing any custom code or scripts for your Changemaker instance or related projects.
* **Configuration File Management**: Keep track of important configuration files with version history.
* **Collaborative Content Development**: Teams can work on documents, with changes reviewed via pull requests before merging.
## Editing the Site
While Gitea hosts the *source files* (e.g., Markdown files for this documentation), the actual *editing process* for this MkDocs site is typically done using **Code Server**. You would:
1. Clone your documentation repository from Gitea to your local workspace (or open it directly if it's already part of your Changemaker file structure accessible by Code Server).
2. Edit the Markdown files using Code Server.
3. Commit and push your changes back to Gitea using Git commands in the Code Server terminal.
## Further Information
* **Gitea Official Documentation**: [https://docs.gitea.io/](https://docs.gitea.io/)

View File

@ -0,0 +1,58 @@
# Homepage Dashboard: Your Central Hub
Homepage is your personal, customizable application dashboard. Within Changemaker V5, it acts as the central command center, providing a unified interface to access all integrated services, monitor their status, and keep bookmarks for frequently used internal and external pages.
## Key Features
* **Unified Access**: Quickly launch any Changemaker application (Code Server, Flatnotes, Listmonk, NocoDB, etc.) from one place.
* **Service Status Monitoring**: (If configured) See at a glance if your services are online and operational.
* **Customizable Layout**: Organize your dashboard with groups, links, and widgets to fit your workflow.
* **Bookmarks**: Keep important links (both internal Changemaker services and external websites) readily accessible.
* **Themeable**: Customize the look and feel to your preference.
* **Lightweight & Fast**: Loads quickly and efficiently.
## Getting Started with Homepage
### Accessing Homepage
1. **URL**: You can typically access Homepage locally via `http://localhost:3010/` (or your configured external URL if set up).
2. **No Login Required (Usually)**: By default, Homepage itself doesn't require a login, but the services it links to (like Code Server or Listmonk) will have their own authentication.
### Basic Usage
1. **Exploring the Dashboard**:
* The main view will show configured service groups and individual service links.
* Clicking on a service link (e.g., "Code Server") will open that application in a new tab or the current window, depending on its configuration.
2. **Understanding the Default Configuration**:
* Changemaker V5 comes with a pre-configured `settings.yaml`, `services.yaml`, and potentially `bookmarks.yaml` for Homepage, located in the `configs/homepage/` directory within your Changemaker project structure.
* These files define what you see on your dashboard.
3. **Customizing Your Dashboard (Advanced)**:
* To customize Homepage, you'll typically edit its YAML configuration files. This can be done using Code Server.
* **Navigate to Configuration**: In Code Server, open your Changemaker project folder, then navigate to `configs/homepage/`.
* **Edit `services.yaml`**: To add, remove, or modify the services displayed.
*Example: Adding a new service*
```yaml
# In services.yaml
- My Services:
- My New App:
href: http://localhost:XXXX # URL of your new app
description: Description of my new app
icon: fas fa-rocket # Font Awesome icon
```
* **Edit `bookmarks.yaml`**: To add your own bookmarks, organized into groups.
*Example: Adding a bookmark group*
```yaml
# In bookmarks.yaml
- Development:
- GitHub:
href: https://github.com/
icon: fab fa-github
```
* **Edit `settings.yaml`**: For general settings like page title, background, etc.
* **Edit `widgets.yaml`**: To add dynamic information like weather, search bars, etc.
* **Apply Changes**: After saving changes to these YAML files, you usually need to restart the Homepage Docker container for them to take effect, or Homepage might pick them up automatically depending on its setup.
## Further Information
For more detailed information on configuring Homepage, available widgets, and advanced customization options, please refer to the [official Homepage Documentation](https://gethomepage.dev/latest/).

View File

@ -0,0 +1,144 @@
# Changemaker V5 - Apps & Services Documentation
This document provides an overview of all the applications and services included in the Changemaker V5 productivity suite, along with links to their documentation.
## Dashboard
### Homepage
- **Description**: Main dashboard for Changemaker V5
- **Documentation**: [Homepage Docs](https://gethomepage.dev/)
- **Local Access**: http://localhost:3010/
- **Details**: Homepage serves as your central command center, providing a unified dashboard to access all Changemaker services from one place. It features customizable layouts, service status monitoring, and bookmarks to frequently used pages, eliminating the need to remember numerous URLs.
## Essential Tools
### Code Server
- **Description**: Visual Studio Code in the browser
- **Documentation**: [Code Server Docs](https://coder.com/docs/code-server)
- **Local Access**: http://localhost:8888/
- **Details**: Code Server brings the power of VS Code to your browser, allowing you to develop and edit code from any device without local installation. This makes it perfect for quick edits to website content, fixing formatting issues, or developing from tablets or borrowed computers. The familiar VS Code interface includes extensions, syntax highlighting, and Git integration.
### Flatnotes
- **Description**: Simple note-taking app - connected directly to blog
- **Documentation**: [Flatnotes Docs](https://github.com/Dullage/Flatnotes)
- **Local Access**: http://localhost:8089/
- **Details**: Flatnotes offers distraction-free, markdown-based note-taking with automatic saving and powerful search. Perfect for capturing ideas that can be directly published to your blog without reformatting. Use it for drafting newsletters, documenting processes, or maintaining a knowledge base that's both private and publishable.
### Listmonk
- **Description**: Self-hosted newsletter and mailing list manager
- **Documentation**: [Listmonk Docs](https://listmonk.app/docs/)
- **Local Access**: http://localhost:9000/
- **Details**: Listmonk provides complete control over your email campaigns without subscription fees or content restrictions. Create segmented lists, design professional newsletters, track engagement metrics, and manage opt-ins/unsubscribes—all while keeping your audience data private. Perfect for consistent communication with supporters without the censorship risks or costs of commercial platforms.
### NocoDB
- **Description**: Open Source Airtable Alternative
- **Documentation**: [NocoDB Docs](https://docs.nocodb.com/)
- **Local Access**: http://localhost:8090/
- **Details**: NocoDB transforms any database into a smart spreadsheet with advanced features like forms, views, and automations. Use it to create volunteer signup systems, event management databases, or campaign tracking tools without subscription costs. Its familiar spreadsheet interface makes it accessible to non-technical users while providing the power of a relational database.
## Content Creation
### MkDocs - Material Theme
- **Description**: Static site generator and documentation builder
- **Documentation**: [MkDocs Docs](https://www.mkdocs.org/)
- **Local Access**: http://localhost:4000/
- **Details**: MkDocs with Material theme transforms simple markdown files into beautiful, professional documentation sites. Ideal for creating campaign websites, project documentation, or public-facing content that loads quickly and ranks well in search engines. The Material theme adds responsive design, dark mode, and advanced navigation features.
### Excalidraw
- **Description**: Virtual collaborative whiteboard for sketching and drawing
- **Documentation**: [Excalidraw Docs](https://github.com/excalidraw/excalidraw)
- **Local Access**: http://localhost:3333/
- **Details**: Excalidraw provides a virtual whiteboard for creating diagrams, flowcharts, or sketches with a hand-drawn feel. It's excellent for visual brainstorming, planning project workflows, or mapping out campaign strategies. Multiple people can collaborate in real-time, making it ideal for remote team planning sessions.
### Gitea
- **Description**: Lightweight self-hosted Git service
- **Documentation**: [Gitea Docs](https://docs.gitea.io/)
- **Local Access**: http://localhost:3030/
- **Details**: Gitea provides a complete code and document version control system similar to GitHub but fully under your control. Use it to track changes to campaign materials, collaborate on content development, manage website code, or maintain configuration files with full revision history. Multiple contributors can work together without overwriting each other's changes.
### OpenWebUI
- **Description**: Web interface for Ollama
- **Documentation**: [OpenWebUI Docs](https://docs.openwebui.com/)
- **Local Access**: http://localhost:3005/
- **Details**: OpenWebUI provides a user-friendly chat interface for interacting with your Ollama AI models. This makes AI accessible to non-technical team members for tasks like drafting responses, generating creative content, or researching topics. The familiar chat format allows anyone to leverage AI assistance without needing to understand the underlying technology.
## Community & Data
### Monica CRM
- **Description**: Personal relationship management system
- **Documentation**: [Monica Docs](https://www.monicahq.com/docs)
- **Local Access**: http://localhost:8085/
- **Details**: Monica CRM helps you maintain meaningful relationships by tracking interactions, important dates, and personal details about contacts. It's perfect for community organizers to remember conversation contexts, follow up appropriately, and nurture connections with supporters. Unlike corporate CRMs, Monica focuses on the human aspects of relationships rather than just sales metrics.
### Answer
- **Description**: Q&A platform for teams
- **Documentation**: [Answer Docs](https://answer.dev/docs)
- **Local Access**: http://localhost:9080/
- **Details**: Answer creates a knowledge-sharing community where team members or supporters can ask questions, provide solutions, and vote on the best responses. It builds an organized, searchable knowledge base that grows over time. Use it for internal team support, public FAQs, or gathering community input on initiatives while keeping valuable information accessible rather than buried in email threads.
### Ferdium
- **Description**: All-in-one messaging application
- **Documentation**: [Ferdium Docs](https://ferdium.org/help)
- **Local Access**: http://localhost:3002/
- **Details**: Ferdium consolidates all your communication platforms (Slack, Discord, WhatsApp, Telegram, etc.) into a single interface. This allows you to monitor and respond across channels without constantly switching applications. Perfect for community managers who need to maintain presence across multiple platforms without missing messages or getting overwhelmed.
### Rocket.Chat
- **Description**: Team collaboration platform with chat, channels, and video conferencing
- **Documentation**: [Rocket.Chat Docs](https://docs.rocket.chat/)
- **Local Access**: http://localhost:3004/
- **Details**: Rocket.Chat provides a complete communication platform for your team or community. Features include real-time chat, channels, direct messaging, file sharing, video calls, and integrations with other services. It's perfect for creating private discussion spaces, coordinating campaigns, or building community engagement. Unlike commercial platforms, you maintain full data sovereignty and control over user privacy.
## Development
### Ollama
- **Description**: Local AI model server for running large language models
- **Documentation**: [Ollama Docs](https://ollama.ai/docs)
- **Local Access**: http://localhost:11435/
- **Details**: Ollama runs powerful AI language models locally on your server, providing AI capabilities without sending sensitive data to third-party services. Use it for content generation, research assistance, or data analysis with complete privacy. Models run on your hardware, giving you full control over what AI can access and ensuring your information stays confidential.
### Portainer
- **Description**: Docker container management UI
- **Documentation**: [Portainer Docs](https://docs.portainer.io/)
- **Local Access**: https://localhost:9443/
- **Details**: Portainer simplifies Docker management with a visual interface for controlling containers, images, networks, and volumes. Instead of complex command-line operations, you can start/stop services, view logs, and manage resources through an intuitive UI, making system maintenance accessible to non-technical users.
### Mini-QR
- **Description**: QR Code Generator
- **Documentation**: [Mini-QR Docs](https://github.com/xbzbing/mini-qr)
- **Local Access**: http://localhost:8081/
- **Details**: Mini-QR enables you to quickly generate customizable QR codes for any URL, text, or contact information. Perfect for campaign materials, business cards, or event signage. Create codes that link to your digital materials without relying on third-party services that may track usage or expire.
### ConvertX
- **Description**: Self-hosted file conversion tool
- **Documentation**: [ConvertX GitHub](https://github.com/c4illin/convertx)
- **Local Access**: http://localhost:3100/
- **Details**: ConvertX provides a simple web interface for converting files between different formats. It supports a wide range of file types including documents, images, audio, and video. This enables you to maintain full control over your file conversions without relying on potentially insecure third-party services. Perfect for converting documents for campaigns, optimizing images for web use, or preparing media files for different platforms.
### n8n
- **Description**: Workflow automation platform
- **Documentation**: [n8n Docs](https://docs.n8n.io/)
- **Local Access**: http://localhost:5678/
- **Details**: n8n automates repetitive tasks by connecting your applications and services with visual workflows. You can create automations like sending welcome emails to new supporters, posting social media updates across platforms, or synchronizing contacts between databases—all without coding. This saves hours of manual work and ensures consistent follow-through on processes.
## Remote Access
When configured with Cloudflare Tunnels, you can access these services remotely at:
- Homepage: https://homepage.yourdomain.com
- Excalidraw: https://excalidraw.yourdomain.com
- Listmonk: https://listmonk.yourdomain.com
- Monica CRM: https://monica.yourdomain.com
- MkDocs: https://yourdomain.com
- Flatnotes: https://flatnotes.yourdomain.com
- Code Server: https://code-server.yourdomain.com
- Ollama: https://ollama.yourdomain.com
- OpenWebUI: https://open-web-ui.yourdomain.com
- Gitea: https://gitea.yourdomain.com
- Portainer: https://portainer.yourdomain.com
- Mini QR: https://mini-qr.yourdomain.com
- Ferdium: https://ferdium.yourdomain.com
- Answer: https://answer.yourdomain.com
- NocoDB: https://nocodb.yourdomain.com
- n8n: https://n8n.yourdomain.com
- ConvertX: https://convertx.yourdomain.com
- Rocket.Chat: https://rocket.yourdomain.com

View File

@ -0,0 +1,67 @@
# Listmonk: Self-Hosted Newsletter & Mailing List Manager
Listmonk is a powerful, self-hosted newsletter and mailing list manager. It gives you complete control over your email campaigns, subscriber data, and messaging without relying on third-party services that might have restrictive terms, high costs, or data privacy concerns. It's ideal for building and engaging with your community.
## Key Features
* **Subscriber Management**: Import, organize, and segment your subscriber lists.
* **Campaign Creation**: Design and send email campaigns using rich text or plain Markdown.
* **Templating**: Create reusable email templates for consistent branding.
* **Analytics**: Track campaign performance with metrics like open rates, click-through rates, etc.
* **Double Opt-In**: Ensure compliance and list quality with double opt-in mechanisms.
* **Self-Hosted**: Full ownership of your data and infrastructure.
* **API Access**: Integrate Listmonk with other systems programmatically.
* **Multi-lingual**: Supports multiple languages.
## Documentation
For more detailed information about Listmonk, visit the [official documentation](https://listmonk.app/docs/).
## Getting Started with Listmonk
### Accessing Listmonk
1. **URL**: Access Listmonk locally via `http://localhost:9000/` (or your configured external URL).
2. **Login**: You will need to log in with the administrator credentials you configured during the Changemaker setup or the first time you accessed Listmonk.
### Basic Workflow
1. **Configure Mail Settings (Important First Step)**:
* After logging in for the first time, navigate to **Settings > SMTP**.
* You MUST configure an SMTP server for Listmonk to be able to send emails. This could be a transactional email service (like SendGrid, Mailgun, Amazon SES - some offer free tiers) or your own mail server.
* Enter the SMTP host, port, username, and password for your chosen email provider.
* Send a test email from Listmonk to verify the settings.
2. **Create a Mailing List**:
* Go to **Lists** and click "New List".
* Give your list a name (e.g., "Monthly Newsletter Subscribers"), a description, and choose its type (public or private).
* Set opt-in preferences (single or double opt-in).
3. **Import Subscribers**:
* Go to **Subscribers**.
* You can add subscribers manually or import them from a CSV file.
* Ensure you have consent from your subscribers before adding them.
* Map CSV columns to Listmonk fields (email, name, etc.).
4. **Create an Email Template (Optional but Recommended)**:
* Go to **Templates** and click "New Template".
* Design a reusable HTML or Markdown template for your emails to maintain consistent branding.
* Use template variables (e.g., `{{ .Subscriber.Email }}`, `{{ .Subscriber.Name }}`) to personalize emails.
5. **Create and Send a Campaign**:
* Go to **Campaigns** and click "New Campaign".
* **Name**: Give your campaign a descriptive name.
* **Subject**: Write a compelling email subject line.
* **Lists**: Select the mailing list(s) to send the campaign to.
* **Content**: Write your email content. You can choose:
* **Rich Text Editor**: A WYSIWYG editor.
* **Plain Text + Markdown**: Write in Markdown for simplicity and version control friendliness.
* **Use a Template**: Select one of your pre-designed templates and fill in the content areas.
* **Send Test Email**: Always send a test email to yourself or a small group to check formatting and links before sending to your entire list.
* **Schedule or Send**: You can schedule the campaign to be sent at a later time or send it immediately.
6. **Analyze Campaign Performance**:
* After a campaign is sent, go to **Campaigns**, click on the campaign name, and view its statistics (sent, opened, clicked, etc.).
## Further Information
For comprehensive details on all Listmonk features, advanced configurations (like bounce handling, API usage), and troubleshooting, please consult the [official Listmonk Documentation](https://listmonk.app/docs/).

View File

@ -0,0 +1,63 @@
# MkDocs with Material Theme: Your Documentation Powerhouse
Changemaker V5 utilizes MkDocs with the Material theme to build this very documentation site. MkDocs is a fast, simple, and downright gorgeous static site generator that's geared towards building project documentation with Markdown.
## Key Features of MkDocs & Material Theme
* **Simple Markdown Syntax**: Write documentation in plain Markdown files.
* **Fast and Lightweight**: Generates static HTML files that load quickly.
* **Material Design**: A clean, modern, and responsive design out-of-the-box.
* **Highly Customizable**: Extensive configuration options for themes, navigation, plugins, and more.
* **Search Functionality**: Built-in search makes it easy for users to find information.
* **Plugin Ecosystem**: Extend MkDocs with various plugins (e.g., for blog functionality, social cards, diagrams).
* **Live Reload Server**: `mkdocs serve` provides a development server that automatically reloads when you save changes.
## Documentation
For more detailed information about MkDocs, visit the [official documentation](https://www.mkdocs.org/).
## Editing This Site (Your Changemaker Documentation)
All content for this documentation site is managed as Markdown files within the `mkdocs/docs/` directory of your Changemaker project.
### How to Edit or Add Content:
1. **Access Code Server**: As outlined on the homepage and in the Code Server documentation, log into Code Server. Your password is in `configs/code-server/.config/code-server/config.yaml`.
2. **Navigate to the `docs` Directory**:
* In Code Server's file explorer, open your Changemaker project folder (e.g., `/home/bunker-admin/Changemaker/`).
* Go into the `mkdocs/docs/` subdirectory.
3. **Find or Create Your Page**:
* **To edit an existing page**: Navigate to the relevant `.md` file (e.g., `apps/code-server.md` to edit the Code Server page, or `index.md` for the homepage content if not using `home.html` override directly).
* **To create a new page**: Create a new `.md` file in the appropriate location (e.g., `apps/my-new-app.md`).
4. **Write in Markdown**: Use standard Markdown syntax. Refer to the `guides/authoring-content.md` for tips on Markdown and MkDocs Material specific features.
5. **Update Navigation (if adding a new page)**:
* Open `mkdocs/mkdocs.yml`.
* Add your new page to the `nav:` section to make it appear in the site navigation. For example:
```yaml
nav:
- Home: index.md
- ...
- Applications:
- ...
- My New App: apps/my-new-app.md # Add your new page here
- ...
```
6. **Save Your Changes**: Press `Ctrl+S` (or `Cmd+S` on Mac) in Code Server.
7. **Preview Changes**:
* The MkDocs development server (if you've run `mkdocs serve` in a terminal within your `mkdocs` directory) will automatically rebuild the site and your browser should refresh to show the changes.
* The typical URL for the local development server is `http://localhost:8000` or `http://127.0.0.1:8000`.
### Site Configuration
The main configuration for the documentation site is in `mkdocs/mkdocs.yml`. Here you can change:
* `site_name`, `site_description`, `site_author`
* Theme features and palette
* Markdown extensions
* Navigation structure (`nav`)
* Plugins
## Further Information
* **MkDocs**: [Official MkDocs Documentation](https://www.mkdocs.org/)
* **MkDocs Material Theme**: [Official Material for MkDocs Documentation](https://squidfunk.github.io/mkdocs-material/)
* **Your Site's Authoring Guide**: Check out `guides/authoring-content.md` in your `mkdocs/docs/` directory.

View File

@ -0,0 +1,55 @@
# Monica CRM: Personal Relationship Management
Monica CRM is a self-hosted, open-source personal relationship management system. It helps you organize and record interactions with your friends, family, and professional contacts, focusing on the human aspects of your relationships rather than just sales metrics like traditional CRMs.
## Key Features
* **Contact Management**: Store detailed information about your contacts (important dates, how you met, family members, etc.).
* **Interaction Logging**: Record activities, conversations, and reminders related to your contacts.
* **Reminders**: Set reminders for birthdays, anniversaries, or to get back in touch.
* **Journaling**: Keep a personal journal that can be linked to contacts or events.
* **Data Ownership**: Self-hosted, so you control your data.
* **Focus on Personal Connections**: Designed to strengthen personal relationships.
## Documentation
For more detailed information about Monica CRM, visit the [official documentation](https://www.monicahq.com/documentation/).
## Getting Started with Monica CRM
### Accessing Monica CRM
1. **URL**: Access Monica CRM locally via `http://localhost:8085/` (or your configured external URL).
2. **Account Creation/Login**: The first time you access Monica, you will need to create an account (email, password). Subsequent visits will require you to log in.
### Basic Usage
1. **Adding Contacts**:
* Look for an "Add Contact" or similar button.
* Fill in as much information as you know: name, relationship to you, important dates (birthdays), how you met, contact information, etc.
* You can add notes, family members, and even how they pronounce their name.
2. **Logging Activities/Interactions**:
* On a contact's page, find options to "Log an activity," "Schedule a reminder," or "Add a note."
* Record details about conversations, meetings, or significant events.
* Set reminders to follow up or for important dates.
3. **Using the Dashboard**: The dashboard usually provides an overview of upcoming reminders, recent activities, and statistics about your relationships.
4. **Journaling**: Explore the journaling feature to write personal entries, which can sometimes be linked to specific contacts or events.
5. **Managing Relationships**: Regularly update contact information and log interactions to keep your relationship history current.
## Use Cases within Changemaker
* **Community Organizers**: Keep track of interactions with supporters, volunteers, and community members.
* **Networking**: Manage professional contacts and remember important details about them.
* **Personal Use**: Strengthen relationships with friends and family by remembering important dates and conversations.
* **Campaign Management**: Track interactions with key stakeholders or donors (though for larger scale campaign CRM, a dedicated tool might be more suitable, Monica excels at the *personal* touch).
## Editing the Site
Monica CRM is a tool for managing personal relationships. It is not used for editing this documentation site. Site editing is done via **Code Server**.
## Further Information
* **Monica CRM Official Website & Documentation**: [https://www.monicahq.com/](https://www.monicahq.com/) and [https://www.monicahq.com/docs](https://www.monicahq.com/docs)

View File

@ -0,0 +1,66 @@
# n8n: Automate Your Workflows
n8n is a powerful workflow automation platform that allows you to connect different services and systems together without needing complex programming skills. Within Changemaker V5, it enables you to create automated processes that save time and ensure consistency across your operations.
## Key Features
* **Visual Workflow Builder**: Create automation flows using an intuitive drag-and-drop interface.
* **Pre-built Integrations**: Connect to hundreds of services including email, social media, databases, and more.
* **Custom Functionality**: Create your own nodes for custom integrations when needed.
* **Scheduling**: Run workflows on schedules or trigger them based on events.
* **Error Handling**: Configure what happens when steps fail, with options to retry or alert.
* **Self-hosted**: Keep your automation data and credentials completely under your control.
* **Credential Management**: Securely store and reuse authentication details for various services.
## Documentation
For more detailed information about n8n, visit the [official documentation](https://docs.n8n.io/).
## Getting Started with n8n
### Accessing n8n
1. **URL**: You can access n8n locally via `http://localhost:5678/` (or your configured external URL if set up).
2. **Authentication**: The first time you access n8n, you'll need to set up an account with admin credentials.
### Basic Usage
1. **Creating Your First Workflow**:
* Click the "+" button in the top right to create a new workflow.
* Add a trigger node (e.g., "Schedule" for time-based triggers or "Webhook" for event-based triggers).
* Connect additional nodes for the actions you want to perform.
* Save your workflow and activate it using the toggle at the top of the editor.
2. **Example Workflow: Automatic Welcome Emails**
* Start with a "Webhook" node that triggers when a new contact is added to your system.
* Connect to an "Email" node configured to send your welcome message.
* Optionally, add a "Slack" or "Rocket.Chat" node to notify your team about the new contact.
3. **Common Use Cases**:
* **Content Publishing**: Automatically post blog updates to social media channels.
* **Data Synchronization**: Keep contacts in sync between different systems.
* **Event Management**: Send reminders before events and follow-ups afterward.
* **Monitoring**: Get notifications when important metrics change or thresholds are reached.
* **Form Processing**: Automatically handle form submissions with confirmation emails and data storage.
### Integration with Other Changemaker Services
n8n works particularly well with other services in your Changemaker environment:
* **NocoDB**: Connect to your databases to automate record creation, updates, or data processing.
* **Listmonk**: Trigger email campaigns based on events or schedules.
* **Gitea**: Automate responses to code changes or issue creation.
* **Monica CRM**: Update contact records automatically when interactions occur.
* **Rocket.Chat**: Send automated notifications to team channels.
## Advanced Features
* **Error Handling**: Configure error workflows and retries for increased reliability.
* **Splitting and Merging**: Process multiple items in parallel and then combine results.
* **Expressions**: Use JavaScript expressions for dynamic data manipulation.
* **Webhooks**: Create endpoints that can receive data from external services.
* **Function Nodes**: Write custom JavaScript code for complex data transformations.
* **Cron Jobs**: Schedule workflows to run at specific intervals.
## Further Information
For more detailed information on creating complex workflows, available integrations, and best practices, please refer to the [official n8n Documentation](https://docs.n8n.io/).

View File

@ -0,0 +1,72 @@
# NocoDB: Open Source Airtable Alternative
NocoDB is a powerful open-source alternative to services like Airtable. It allows you to turn various types of SQL databases (like MySQL, PostgreSQL, SQL Server, SQLite) into a smart spreadsheet interface. This makes data management, collaboration, and even building simple applications much more accessible without extensive coding.
## Key Features
* **Spreadsheet Interface**: View and manage your database tables like a spreadsheet.
* **Multiple View Types**: Beyond grids, create Kanban boards, forms, galleries, and calendar views from your data.
* **Connect to Existing Databases**: Bring your existing SQL databases into NocoDB or create new ones from scratch.
* **API Access**: NocoDB automatically generates REST APIs for your tables, enabling integration with other applications and services.
* **Collaboration**: Share bases and tables with team members with granular permission controls.
* **App Store / Integrations**: Extend functionality with built-in or third-party apps and integrations.
* **Self-Hosted**: Maintain full control over your data and infrastructure.
* **No-Code/Low-Code**: Build simple applications and workflows with minimal to no coding.
## Documentation
For more detailed information about NocoDB, visit the [official documentation](https://docs.nocodb.com/).
## Getting Started with NocoDB
### Accessing NocoDB
1. **URL**: Access NocoDB locally via `http://localhost:8090/` (or your configured external URL).
2. **Initial Setup / Login**:
* The first time you access NocoDB, you might be guided through a setup process to create an initial super admin user.
* For subsequent access, you'll log in with these credentials.
### Basic Workflow
1. **Understanding the Interface**:
* **Workspace/Projects (or Bases)**: NocoDB organizes data into projects or bases, similar to Airtable bases. Each project can contain multiple tables.
* **Tables**: These are your database tables, displayed in a spreadsheet-like grid by default.
* **Views**: For each table, you can create multiple views (Grid, Form, Kanban, Gallery, Calendar) to visualize and interact with the data in different ways.
2. **Creating a New Project/Base**:
* Look for an option like "New Project" or "Create Base".
* You might be asked to connect to an existing database or create a new one (often SQLite by default for ease of use if not connecting to an external DB).
3. **Creating a Table**:
* Within a project, create new tables.
* Define columns (fields) for your table, specifying the data type for each (e.g., Text, Number, Date, Email, Select, Attachment, Formula, Link to Another Record).
4. **Adding and Editing Data**:
* Click into cells in the grid view to add or edit data, just like a spreadsheet.
* Use forms (if you create a form view) for more structured data entry.
5. **Creating Different Views**:
* For any table, click on the view switcher (often near the table name) and select "Create View".
* Choose the view type (e.g., Kanban).
* Configure the view (e.g., for Kanban, select the single-select field that will define the columns/stacks).
6. **Linking Tables (Relational Data)**:
* Use the "Link to Another Record" field type to create relationships between tables (e.g., link a `Tasks` table to a `Projects` table).
* This allows you to look up and display related data across tables.
7. **Using Formulas**:
* Create formula fields to compute values based on other fields in the same table, similar to spreadsheet formulas.
8. **Exploring APIs**:
* NocoDB automatically provides REST API endpoints for your tables. Look for an "API Docs" or similar section to explore these APIs, which can be used to integrate NocoDB data with other applications (e.g., your website, automation scripts).
## Use Cases within Changemaker
* **Content Management**: Manage structured content for your website or blog (e.g., a list of events, resources, testimonials).
* **Contact Management/CRM**: Keep track of contacts, leads, or supporters.
* **Project Management**: Track tasks, projects, and deadlines.
* **Inventory Management**: If applicable to your campaign or project.
* **Data Collection**: Use NocoDB forms to collect information.
## Further Information
NocoDB is a feature-rich platform. For detailed guides, tutorials, API documentation, and advanced usage, refer to the [official NocoDB Documentation](https://docs.nocodb.com/).

View File

@ -0,0 +1,72 @@
# Ollama: Local AI Model Server
Ollama is a tool that allows you to run large language models (LLMs) locally on your own server or computer. It simplifies the process of downloading, setting up, and interacting with powerful open-source AI models, providing AI capabilities without relying on third-party cloud services and ensuring data privacy.
## Key Features
* **Run LLMs Locally**: Host and run various open-source large language models (like Llama, Gemma, Mistral, etc.) on your own hardware.
* **Simple CLI**: Easy-to-use command-line interface for downloading models (`ollama pull`), running them (`ollama run`), and managing them (`ollama list`).
* **API Server**: Ollama serves models through a local API, allowing other applications (like OpenWebUI) to interact with them.
* **Data Privacy**: Since models run locally, your data doesn't leave your server when you interact with them.
* **Growing Model Library**: Access a growing library of popular open-source models.
* **Customization**: Create custom model files (Modelfiles) to tailor model behavior.
## Documentation
For more detailed information about Ollama, visit the [official repository](https://github.com/ollama/ollama).
## Getting Started with Ollama (within Changemaker)
Ollama itself is primarily a command-line tool and an API server. You typically interact with it via a terminal or through a UI like OpenWebUI.
### Managing Ollama via Terminal (e.g., in Code Server)
1. **Access a Terminal**:
* Open the integrated terminal in Code Server.
* Alternatively, SSH directly into your Changemaker server.
2. **Common Ollama Commands**:
* **List Downloaded Models**: See which models you currently have.
```bash
docker exec -it ollama-changemaker ollama list
```
*(The `docker exec -it ollama-changemaker` part is necessary if Ollama is running in a Docker container named `ollama-changemaker`, which is common. If Ollama is installed directly on the host, you'd just run `ollama list`.)*
* **Pull (Download) a New Model**: Download a model from the Ollama library. Replace `gemma:2b` with the desired model name and tag.
```bash
docker exec -it ollama-changemaker ollama pull gemma:2b
```
(Example: `ollama pull llama3`, `ollama pull mistral`)
* **Run a Model (Interactive Chat in Terminal)**: Chat directly with a model in the terminal.
```bash
docker exec -it ollama-changemaker ollama run gemma:2b
```
(Press `Ctrl+D` or type `/bye` to exit the chat.)
* **Remove a Model**: Delete a downloaded model to free up space.
```bash
docker exec -it ollama-changemaker ollama rm gemma:2b
```
### Interacting with Ollama via OpenWebUI
For a more user-friendly chat experience, use OpenWebUI, which connects to your Ollama service. See the `apps/openwebui.md` documentation for details.
## Use Cases within Changemaker
* **Powering OpenWebUI**: Ollama is the backend engine that OpenWebUI uses to provide its chat interface.
* **AI-Assisted Content Creation**: Generate text, summaries, ideas, or code snippets with privacy.
* **Custom AI Applications**: Developers can build custom applications that leverage the Ollama API for various AI tasks.
* **Offline AI Capabilities**: Use AI models even without an active internet connection (once models are downloaded).
## Editing the Site
Ollama is an AI model server. It is not used for editing this documentation site. Site editing is done via **Code Server**.
## Further Information
* **Ollama Official Website**: [https://ollama.ai/](https://ollama.ai/)
* **Ollama Documentation**: [https://ollama.ai/docs](https://ollama.ai/docs)
* **Ollama GitHub**: [https://github.com/ollama/ollama](https://github.com/ollama/ollama)
* The existing `ollama.md` at the root of the `docs` folder in your project might also contain specific setup notes for your Changemaker instance.

View File

@ -0,0 +1,53 @@
# OpenWebUI: Chat Interface for Ollama
OpenWebUI provides a user-friendly, web-based chat interface for interacting with local AI models run by Ollama. It makes leveraging the power of large language models (LLMs) accessible to users who may not be comfortable with command-line interfaces, offering a familiar chat experience.
## Key Features
* **Chat Interface**: Intuitive, ChatGPT-like interface for interacting with Ollama models.
* **Model Selection**: Easily switch between different AI models you have downloaded via Ollama.
* **Conversation History**: Keeps track of your chats.
* **Responsive Design**: Usable on various devices.
* **Self-Hosted**: Runs locally as part of your Changemaker suite, ensuring data privacy.
* **Markdown Support**: Renders model responses that include Markdown for better formatting.
## Documentation
For more detailed information about OpenWebUI, visit the [official documentation](https://docs.openwebui.com/).
## Getting Started with OpenWebUI
### Prerequisites
* **Ollama Must Be Running**: OpenWebUI is an interface *for* Ollama. Ensure your Ollama service is running and you have downloaded some models (e.g., `ollama pull llama3`).
### Accessing OpenWebUI
1. **URL**: Access OpenWebUI locally via `http://localhost:3005/` (or your configured external URL).
2. **Account Creation (First Time)**: The first time you access OpenWebUI, you'll likely need to sign up or create an admin account for the interface itself.
### Basic Usage
1. **Log In**: Sign in with your OpenWebUI credentials.
2. **Select a Model**:
* There should be an option (often a dropdown menu) to select which Ollama model you want to chat with. This list will populate based on the models you have pulled using the Ollama service.
* If you don't see any models, you may need to go to a terminal (e.g., in Code Server or directly on your server) and run `ollama list` to see available models or `ollama pull <modelname>` (e.g., `ollama pull gemma:2b`) to download a new one.
3. **Start Chatting**:
* Type your prompt or question into the message box at the bottom of the screen and press Enter or click the send button.
* The selected Ollama model will process your input and generate a response, which will appear in the chat window.
4. **Manage Conversations**: You can typically start new chats or revisit previous conversations from a sidebar.
## Use Cases within Changemaker
* **Content Generation**: Draft blog posts, newsletter content, social media updates, or documentation.
* **Brainstorming**: Generate ideas for campaigns, projects, or problem-solving.
* **Research Assistance**: Ask questions and get summaries on various topics (ensure you verify information from LLMs).
* **Drafting Responses**: Help formulate replies to emails or messages.
* **Learning & Exploration**: Experiment with different AI models and their capabilities.
## Editing the Site
OpenWebUI is a tool for interacting with AI models. It is not used for editing this documentation site. Site editing is done via **Code Server**.
## Further Information
* **OpenWebUI Official Documentation/GitHub**: [https://docs.openwebui.com/](https://docs.openwebui.com/) or their GitHub repository (often linked from the UI itself).
* **Ollama Documentation**: [https://ollama.ai/docs](https://ollama.ai/docs) (for information on managing Ollama and downloading models).

View File

@ -0,0 +1,69 @@
# Portainer: Docker Container Management UI
Portainer is a lightweight management UI that allows you to easily manage your Docker environments (or other container orchestrators like Kubernetes). Changemaker V5 runs its applications as Docker containers, and Portainer provides a visual interface to see, manage, and troubleshoot these containers.
## Key Features
* **Container Management**: View, start, stop, restart, remove, and inspect Docker containers.
* **Image Management**: Pull, remove, and inspect Docker images.
* **Volume Management**: Manage Docker volumes used for persistent storage.
* **Network Management**: Manage Docker networks.
* **Stacks/Compose**: Deploy and manage multi-container applications defined in Docker Compose files (stacks).
* **Logs & Stats**: View container logs and resource usage statistics (CPU, memory).
* **User-Friendly Interface**: Simplifies Docker management for users who may not be comfortable with the command line.
* **Multi-Environment Support**: Can manage multiple Docker hosts or Kubernetes clusters (though in Changemaker, it's typically managing the local Docker environment).
## Documentation
For more detailed information about Portainer, visit the [official documentation](https://docs.portainer.io/).
## Getting Started with Portainer
### Accessing Portainer
1. **URL**: Access Portainer locally via `http://localhost:9002/` (or your configured external URL).
2. **Initial Setup/Login**:
* The first time you access Portainer, you will need to set up an administrator account (username and password).
* You will then connect Portainer to the Docker environment it should manage. For Changemaker, this is usually the local Docker socket.
### Basic Usage
1. **Dashboard**: The main dashboard provides an overview of your Docker environment (number of containers, volumes, images, etc.).
2. **Containers List**:
* Navigate to "Containers" from the sidebar.
* You'll see a list of all running and stopped containers (e.g., `code-server`, `flatnotes`, `listmonk`, etc., that make up Changemaker).
* **Actions**: For each container, you can perform actions like:
* **Logs**: View real-time logs.
* **Inspect**: See detailed configuration and state.
* **Stats**: View resource usage.
* **Console**: Connect to the container's terminal (if supported by the container).
* **Stop/Start/Restart/Remove**.
3. **Images List**:
* Navigate to "Images" to see all Docker images pulled to your server.
* You can pull new images from Docker Hub or other registries, or remove unused images.
4. **Volumes List**:
* Navigate to "Volumes" to see Docker volumes, which are used by Changemaker apps to store persistent data (e.g., your notes in Flatnotes, your Listmonk database).
5. **Stacks (Docker Compose)**:
* Navigate to "Stacks."
* Changemaker itself is likely deployed as a stack using its `docker-compose.yml` file. You might see it listed here.
* You can add new stacks (deploy other Docker Compose applications) or manage existing ones.
## Use Cases within Changemaker
* **Monitoring Application Status**: Quickly see if all Changemaker application containers are running.
* **Viewing Logs**: Troubleshoot issues by checking the logs of specific application containers.
* **Restarting Applications**: If an application becomes unresponsive, you can try restarting its container via Portainer.
* **Resource Management**: Check CPU and memory usage of containers if you suspect performance issues.
* **Advanced Management**: For users comfortable with Docker, Portainer provides an easier interface for tasks that would otherwise require command-line operations.
## Editing the Site
Portainer is for managing the Docker containers that run the applications. It is not used for editing this documentation site. Site editing is done via **Code Server**.
## Further Information
* **Portainer Official Website**: [https://www.portainer.io/](https://www.portainer.io/)
* **Portainer Documentation**: [https://docs.portainer.io/](https://docs.portainer.io/)

View File

@ -0,0 +1,65 @@
# Rocket.Chat: Team & Community Collaboration Platform
Rocket.Chat is a powerful, open-source team collaboration platform. It offers a wide range of communication tools, including real-time chat, channels, direct messaging, video conferencing, and file sharing. It's designed for teams and communities to communicate and collaborate effectively in a self-hosted environment.
## Key Features
* **Real-time Chat**: Public channels, private groups, and direct messages.
* **File Sharing**: Share documents, images, and other files.
* **Voice and Video Conferencing**: Integrated audio and video calls.
* **Guest Access**: Allow external users to participate in specific channels.
* **Integrations**: Connect with other tools and services through bots and APIs.
* **Customization**: Themes, permissions, and extensive administrative controls.
* **Self-Hosted**: Full data sovereignty and control over user privacy.
* **Mobile and Desktop Apps**: Access Rocket.Chat from various devices.
## Documentation
For more detailed information about Rocket.Chat, visit the [official documentation](https://docs.rocket.chat/).
## Getting Started with Rocket.Chat
### Accessing Rocket.Chat
1. **URL**: Access Rocket.Chat locally via `http://localhost:3004/` (or your configured external URL).
2. **Account Registration/Login**:
* The first time you access it, you or an administrator will need to set up an admin account and configure the server.
* Users will then need to register for an account or be invited by an admin.
### Basic Usage
1. **Interface Overview**:
* **Channels/Rooms**: The main area for discussions. Channels can be public or private.
* **Direct Messages**: For one-on-one conversations.
* **User List**: See who is online and available.
* **Search**: Find messages, users, or channels.
2. **Joining Channels**:
* Browse the directory of public channels or be invited to private ones.
3. **Sending Messages**:
* Type your message in the input box at the bottom of a channel or direct message.
* Use Markdown for formatting, emojis, and @mentions to notify users.
4. **Starting a Video/Audio Call**: Look for the call icons within a channel or direct message to start a voice or video call.
5. **Managing Your Profile**: Update your profile picture, status, and notification preferences.
6. **Administration (For Admins)**:
* Access the administration panel to manage users, permissions, channels, integrations, and server settings.
## Use Cases within Changemaker
* **Internal Team Communication**: A central place for your campaign team or organization members to chat, share files, and coordinate efforts.
* **Community Building**: Create a private or public chat community for your supporters or users.
* **Project Collaboration**: Dedicate channels to specific projects or tasks.
* **Support Channel**: Offer a real-time support channel for your users or community members.
* **Alternative to Slack/Discord**: A self-hosted option providing similar functionality with more control.
## Editing the Site
Rocket.Chat is a communication platform. It is not used for editing this documentation site. Site editing is done via **Code Server**.
## Further Information
* **Rocket.Chat Official Website**: [https://www.rocket.chat/](https://www.rocket.chat/)
* **Rocket.Chat Documentation**: [https://docs.rocket.chat/](https://docs.rocket.chat/)

View File

@ -0,0 +1,210 @@
# Authoring Content with Markdown and MkDocs Material
This guide provides a brief overview of writing content using Markdown and leveraging the styling capabilities of the MkDocs Material theme for your Changemaker documentation site.
## Markdown Basics
Markdown is a lightweight markup language with plain-text formatting syntax. It's designed to be easy to read and write.
### Headings
```markdown
# Heading 1
## Heading 2
### Heading 3
```
### Emphasis
```markdown
*Italic text* or _Italic text_
**Bold text** or __Bold text__
~~Strikethrough text~~
```
### Lists
**Ordered List:**
```markdown
1. First item
2. Second item
3. Third item
```
**Unordered List:**
```markdown
- Item A
- Item B
- Sub-item B1
- Sub-item B2
* Item C
```
### Links
```markdown
[Link Text](https://www.example.com)
[Link with Title](https://www.example.com "An example link")
[Relative Link to another page](../apps/code-server.md)
```
### Images
```markdown
![Alt text for image](/assets/images/changemaker.png "Optional Image Title")
```
*Place your images in the `mkdocs/docs/assets/images/` directory (or create it if it doesn't exist) and reference them accordingly.*
### Code Blocks
**Inline Code:**
Use backticks: `this is inline code`.
**Fenced Code Blocks (Recommended for multi-line code):**
Specify the language for syntax highlighting.
````markdown
```python
def hello_world():
print("Hello, world!")
```
```html
<h1>Hello</h1>
```
````
### Blockquotes
```markdown
> This is a blockquote.
> It can span multiple lines.
```
### Horizontal Rule
```markdown
---
***
```
### Tables
```markdown
| Header 1 | Header 2 | Header 3 |
| :------- | :------: | -------: |
| Align L | Center | Align R |
| Cell 1 | Cell 2 | Cell 3 |
```
## MkDocs Material Theme Features
MkDocs Material provides many enhancements and custom syntax options on top of standard Markdown.
### Admonitions (Call-outs)
These are great for highlighting information.
```markdown
!!! note
This is a note.
!!! tip "Optional Title"
Here's a helpful tip!
!!! warning
Be careful with this action.
!!! danger "Critical Alert"
This is a critical warning.
!!! abstract "Summary"
This is an abstract or summary.
```
Supported types include: `note`, `abstract`, `info`, `tip`, `success`, `question`, `warning`, `failure`, `danger`, `bug`, `example`, `quote`.
### Code Blocks with Titles and Line Numbers
Your `mkdocs.yml` is configured for `pymdownx.highlight` which supports this.
````markdown
```python title="my_script.py" linenums="1"
print("Hello from Python")
```
````
### Emojis
Your `mkdocs.yml` has `pymdownx.emoji` enabled.
```markdown
:smile: :rocket: :warning:
```
See the [MkDocs Material Emoji List](https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#search-for-emojis) for available emojis.
### Footnotes
Your `mkdocs.yml` has `footnotes` enabled.
```markdown
This is some text with a footnote.[^1]
[^1]: This is the footnote definition.
```
### Content Tabs
Group related content under tabs.
````markdown
=== "Tab 1 Title"
Content for tab 1 (can be Markdown)
=== "Tab 2 Title"
Content for tab 2
```python
# Code blocks work here too
print("Hello from Tab 2")
```
````
### Task Lists
```markdown
- [x] Completed task
- [ ] Incomplete task
- [ ] Another task
```
### Styling with Attributes (`attr_list`)
You can add CSS classes or IDs to elements.
```markdown
This is a paragraph with a custom class.
{: .my-custom-class }
## A Heading with an ID {#custom-heading-id}
```
This is useful for applying custom CSS from your `extra.css` file.
### Buttons
MkDocs Material has a nice way to create buttons from links:
```markdown
[This is a button link](https://example.com){ .md-button }
[Primary button](https://example.com){ .md-button .md-button--primary }
[Another button](another-page.md){ .md-button }
```
## Editing Workflow
1. **Use Code Server**: Access Code Server from your Changemaker dashboard.
2. **Navigate**: Open the `mkdocs/docs/` directory.
3. **Create or Edit**: Create new `.md` files or edit existing ones.
4. **Save**: Save your changes (`Ctrl+S` or `Cmd+S`).
5. **Preview**:
* If you have `mkdocs serve` running (either locally on your machine if developing there, or in a terminal within Code Server pointing to the `mkdocs` directory), your documentation site (usually at `http://localhost:8000` or `http://127.0.0.1:8000`) will auto-reload.
* Alternatively, you can use VS Code extensions like "Markdown Preview Enhanced" within Code Server for a live preview pane.
## Further Reading
* [MkDocs Material Reference](https://squidfunk.github.io/mkdocs-material/reference/): The official documentation for all features.
* [Markdown Guide](https://www.markdownguide.org/basic-syntax/): For general Markdown syntax.
This guide should give you a solid start. Explore the MkDocs Material documentation for even more advanced features like diagrams, math formulas, and more complex page layouts.

View File

@ -0,0 +1,3 @@
# Guides
The following guides to properly configure your site.

View File

@ -0,0 +1,84 @@
# Using Ollama Models in VS Code (Code-Server)
You can integrate Ollama models with your VS Code environment (code-server) in several ways:
## Option 1: Install a VS Code Extension
The easiest approach is to install a VS Code extension that connects to Ollama:
1. In [code-server](http://localhost:8888) (your VS Code interface), open the Extensions panel
2. Search for "Continue" or "Ollama" and install an extension like "Continue" or "Ollama Chat"
3. Configure the extension to connect to Ollama using the internal Docker network URL:
```
http://ollama-changemaker:11434
```
## Option 2: Use the API Directly from the VS Code Terminal
Since the Docker CLI isn't available inside the code-server container, we can interact with the Ollama API directly using curl:
```bash
# List available models
curl http://ollama-changemaker:11434/api/tags
# Generate text with a model
curl -X POST http://ollama-changemaker:11434/api/generate -d '{
"model": "llama3",
"prompt": "Write a function to calculate Fibonacci numbers"
}'
# Pull a new model
curl -X POST http://ollama-changemaker:11434/api/pull -d '{
"name": "mistral:7b"
}'
```
## Option 3: Write Code That Uses the Ollama API
You can write scripts that connect to Ollama's API. For example, in Python:
```python
import requests
def ask_ollama(prompt, model="llama3"):
response = requests.post(
"http://ollama-changemaker:11434/api/generate",
json={"model": model, "prompt": prompt}
)
return response.json()["response"]
# Example usage
result = ask_ollama("What is the capital of France?")
print(result)
# List available models
def list_models():
response = requests.get("http://ollama-changemaker:11434/api/tags")
models = response.json()["models"]
return [model["name"] for model in models]
# Pull a new model
def pull_model(model_name):
response = requests.post(
"http://ollama-changemaker:11434/api/pull",
json={"name": model_name}
)
# This will take time for large models
return response.status_code
```
## From Your Host Machine's Terminal (Not VS Code)
If you want to use Docker commands, you'll need to run them from your host machine's terminal, not from inside VS Code:
```bash
# List available models
docker exec -it ollama-changemaker ollama list
# Pull models
docker exec -it ollama-changemaker ollama pull llama3
docker exec -it ollama-changemaker ollama pull mistral:7b
docker exec -it ollama-changemaker ollama pull codellama
```
The key is using the Docker network hostname `ollama-changemaker` with port `11434` as your connection point, which should be accessible from your code-server container since they're on the same network.

5
mkdocs/docs/cm/index.md Normal file
View File

@ -0,0 +1,5 @@
---
title: Welcome to Change Maker
template: home.cm.html
---

372
mkdocs/docs/cm/readme.md Executable file
View File

@ -0,0 +1,372 @@
# Changemaker V5
![changemakergif](images/changemkaerv5.gif)
---
Changemaker V5 is a battle-tested, lightweight, self-hosted productivity suite which empowers you to deploy secure, locally-built websites, blogs, newsletters, & forms from personal projects to full-fledged campaigns granting you complete control, inherent security, and true freedom of speech.
It is a project undertaken by The Bunker Operations, headquarted in Edmonton, Alberta, Canada, as to provide our community a digital campaign alternative to mainstream American systems.
![build your power](assets/images/buildyourpower.png)
## Contents
- [Prerequisites](#prerequisites)
- [Quick Start](#quick-start)
- [Detailed Installation](#detailed-installation)
- [1. Install Docker and Docker Compose](#1-install-docker-and-docker-compose)
- [2. Clone the Repository](#2-clone-the-repository)
- [3. Configure Your Environment](#3-configure-your-environment)
- [4. Start the Services](#4-start-the-services)
- [5. Run Post-Installation Tasks](#5-run-post-installation-tasks)
- [Local Service Ports](#local-service-ports)
- [Cloudflare Tunnel Setup](#cloudflare-tunnel-setup)
- [Install Cloudflared on Ubuntu 24.04](#install-cloudflared-on-ubuntu-2404)
- [Configure Your Cloudflare Tunnel](#configure-your-cloudflare-tunnel)
- [Create a Cloudflare System Service](#create-a-cloudflare-system-service)
- [Add CNAME Records](#add-cname-records)
- [Website Build and Deployment Workflow](#website-build-and-deployment-workflow)
- [Accessing Your Services](#accessing-your-services)
- [Troubleshooting](#troubleshooting)
---
## Development Pathway
Changemaker's identified wants for development:
- Internal integrations for assset management i.e. shared plain file locations
- Database connections for automation systems i.e. manauls for Nocodb & n8n on connecting services
- Manual & landing site for the whole system i.e. upgrading bnkops.com
- Trainings and manuals across the board
Idenitfied Feature Requests:
- Event Management: Looking at [hi.ewvents](https://hi.events/)
- Scheduling: Looking at [rally](https://rallly.co/)
- Support and user chat: looking at [chatwoot](https://github.com/chatwoot/chatwoot)
- Mass community chat: looking at [thelounge](https://thelounge.chat/)
- Team chat and project management: looking at [rocket chat](https://github.com/RocketChat/Rocket.Chat) ✔️
Bugs:
- Readme needs a full flow redo - ✅ next up
- Config script needs to be updated for nocodb for a simpler string / set the string - :white_check_mark:
- Gitea DNS application access bypass not properly setting - ✅ bypass needing manual setup / need to explore api more
- Portainer not serving to http - 🤔 portainer to be limited to local access
- nocodb setup upping odd - ✅ password needs no special characters
- ferdium port mismatch - ✅ was a cloudflare port setting missmatch
## Prerequisites
- A Linux server (Ubuntu 22.04/24.04 recommended)
- Docker & Docker Compose
- Internet connection
- (Optional) Root or sudo access
- (Optional) A domain name for remote access
- (Optional) Cloudflare account for tunnel setup
## Quick Start for Local Dev
Review all off the applications [here](apps.md)
If you're familiar with Docker and want to get started quickly:
```bash
# Clone the repository
git clone https://gitea.bnkhome.org/bnkops/Changemaker.git
cd changemaker
```
See [Setting Up Cloudflare Credentials](#setting-up-cloudflare-credentials) for how to get cloudflare credentials for config.sh.
```bash
# Use default configuration for local development.
# To configure for remote deployment with Cloudflare, first make the script executable:
chmod +x config.sh
# Then run the configuration script. You will need your Cloudflare details.
./config.sh
```
```
# Start all services
docker compose up -d
```
**First time installation can take several miniutes**
On a 1GB internet connection, instal time is approximately 5 minutes.
### ⚠️ Configure Portainer Immediately 🦊
Portainer has a timed build process that needs to be completed on successful build. Proceed to configure the service by visiting https://localhost:9444
Gitea has a install process that you should complete immediately after connecting system to dns and domain services.
### On Successful Build, Vist [Local Homepage](http://localhost:3011)
The [local homepage - http://localhost:3011](http://localhost:3011) is configured with all of the services you can access securely locally.
To access services outside of network, configure a VPN, Tailscale, or continue to Cloudflare publishing documentation.
## Local Service Ports
When running Changemaker locally, you can access the services at the following ports on your server:
| Service | Local Port | Local URL |
|--------------|------------|------------------------------------------|
| Root/Website (Nginx) | 4001 | [http://localhost:4001](http://localhost:4001) |
| Homepage (local) | 3011 | [http://locahost:3011](http://localhost:3011) |
| Homepage | 3010 | [http://localhost:3010](http://localhost:3010) |
| Excalidraw | 3333 | [http://localhost:3333](http://localhost:3333) |
| Listmonk | 9000 | [http://localhost:9000](http://localhost:9000) |
| Monica CRM | 8085 | [http://localhost:8085](http://localhost:8085) |
| MkDocs | 4000 | [http://localhost:4000](http://localhost:4000) |
| Flatnotes | 8089 | [http://localhost:8089](http://localhost:8089) |
| Code Server | 8888 | [http://localhost:8888](http://localhost:8888) |
| Ollama | 11435 | [http://localhost:11435](http://localhost:11435) |
| OpenWebUI | 3005 | [http://localhost:3005](http://localhost:3005) |
| Gitea | 3030 | [http://localhost:3030](http://localhost:3030) |
| Portainer | 8005 | [https://localhost:9444](https://localhost:9444) |
| Mini QR | 8081 | [http://localhost:8081](http://localhost:8081) |
| Ferdium | 3009 | [http://localhost:3009](http://localhost:3009) |
| Answer | 9080 | [http://localhost:9080](http://localhost:9080) |
| NocoDB | 8090 | [http://localhost:8090](http://localhost:8090) |
| n8n | 5678 | [http://localhost:5678](http://localhost:5678) |
| ConvertX | 3100 | [http://localhost:3100](http://localhost:3100) |
| Rocket.Chat | 3004 | [http://localhost:3004](http://localhost:3004) |
### Ubuntu OS & Build Outs
You can deploy Changemaker on any OS using Docker however we also provide several full Ubuntu build-outs. These scripts can speed up your deployment immensely and Changemaker is developed on a like system:
1. **[build.server](https://gitea.bnkhome.org/bnkops/scripts/src/branch/main/build.server.md)** - this build-out is a lightweight deployment aimed for dedicated server machines. It is focused on entry level users who would build on a dedicated machine.
2. **[build.homelab](https://gitea.bnkhome.org/bnkops/scripts/src/branch/main/build.homelab.md)** - this build-out is full-some development focused build-out that The Bunker Operations uses for our day-to-day operations.
Configuration and services scripts for futher developing the system can be found at the [scripts](https://gitea.bnkhome.org/bnkops/scripts) repo.
### 1. Install Docker and Docker Compose
Install Docker and Docker Compose on your system if they're not already installed:
[Install Docker & Docker Compose](https://gitea.bnkhome.org/bnkops/scripts/src/branch/main/build.homelab.md#dockerhttpswwwdockercom)
Verify that Docker and Docker Compose are installed correctly:
```bash
docker --version
docker compose version
```
### 2. Clone the Repository
```bash
git clone https://github.com/your-org/changemaker-v5.git
cd changemaker-v5
```
### 2. Configure Your Environment
#### Setting Up Cloudflare Credentials
To use the configuration script, you'll need to collect several Cloudflare credentials:
!!! info "Required Cloudflare Information"
You'll need three important pieces of information from your Cloudflare account:
- API Token with proper permissions
- Zone ID for your domain
- Tunnel ID
##### 1. Create an API Token
1. Go to your [Cloudflare Dashboard](https://dash.cloudflare.com/) → Profile → API Tokens
2. Click "Create Token"
3. Choose one of these options:
- Use the "Edit zone DNS" template
- Create a custom token with these permissions:
* Zone:DNS:Edit
* Access:Apps:Edit
4. Restrict the token to only your specific zone/domain
5. Generate and copy the token
##### 2. Get your Zone ID
1. Go to your domain's overview page in the Cloudflare dashboard
2. The Zone ID is displayed on the right sidebar
3. It looks like: `023e105f4ecef8ad9ca31a8372d0c353`
##### 3. Get your Tunnel ID
1. If you've already created a tunnel, you can find the ID:
- Go to Cloudflare Zero Trust dashboard → Access → Tunnels
- Click on your tunnel
- The Tunnel ID is in the URL: `https://dash.teams.cloudflare.com/xxx/network/tunnels/xxxx`
- It looks like: `6ff42ae2-765d-4adf-8112-31c55c1551ef`
!!! tip "Keep Your Credentials Secure"
Store these credentials securely. Never commit them to public repositories or share them in unsecured communications.
You have two options:
**Option A: Use the configuration wizard (recommended)**
```bash
# Make the script executable
chmod +x config.sh
# Run the configuration wizard
./config.sh
```
**Option B: Configure manually**
```bash
# Edit the .env file with your settings
nano .env
```
### 4. Start the Services
```bash
# Pull and start all containers in detached mode
docker compose up -d
```
!!! warning "Configure Portainer"
Portainer has a timed build process. Make sure to immediatly configure the service at https://localhost:9444 following successful build.
All services can now be accessed through on local machine. If deploying to public, it is recommended to **configure portainer** and then continue configuration for all other services once tunnel is established. Then use the public links for configuration of services. For online deployment with Cloudflare, continue to next steps.
### 4. Cloudflare Tunnel Setup
For secure remote access to your services, you can set up a Cloudflare Tunnel.
### Install Cloudflared on Ubuntu 24.04
[Cloudflared Installation Guide](https://gitea.bnkhome.org/bnkops/scripts/src/branch/main/build.homelab.md#cloudflaredhttpsdeveloperscloudflarecomcloudflare-oneconnectionsconnect-networks)
### Configure Your Cloudflare Tunnel
You can use our [Cloudflare Configuration Guide](https://gitea.bnkhome.org/bnkops/scripts/src/branch/main/config.cloudflare.homelab.md) however remember to copy the values of the [example config](example.cloudflare.config.yml) for this deployment.
### Create a Cloudflare System Service
[Cloudflare Service Setup Guide](https://gitea.bnkhome.org/bnkops/scripts/src/branch/main/service.cloudflared.md)
### Add CNAME Records
After setting up your Cloudflare Tunnel, you need to add CNAME records for your services. You can do this manually in the Cloudflare DNS panel or with using the following script: `add-cname-records.sh`
```bash
# Make the script executable
chmod +x add-cname-records.sh
# Run the script to add CNAME records
./add-cname-records.sh
```
This script will add CNAME records for all Changemaker services to your Cloudflare DNS.
It will also set up a Cloudflare Access Application for all services execpt for your website and gitea. This is a extra layer of security that we do recommend for your deployment. It will automatically allow any emails with from the root domain that you set in the `config.sh` process. For example, if you set your root domain to `example.com` your access rule will allow emails ending with @example.com thorugh. You can update your access settings in the Cloudflare Zero Trust dashboard.
!!! warning "Cloudflare Zero Trust"
To ensure that system is secure, we highly recommend setting up some level of access control using Cloudflare Zero Trust. The `add-cname-records.sh` will do this automatically however the user is encouraged to familiarize themselves with Cloudflares Zero Trust access system.
## Website Build and Deployment Workflow
Changemaker uses MkDocs to create your website content, which is then served by an Nginx server. To update your website, you need to:
1. **Edit your content** using either the Code Server or locally on your machine
2. **Build the static site files**
3. **Let the Nginx server (mkdocs-site-server) serve the built site**
### Building Your Website
You can build your website in two ways:
#### Option 1: Using Code Server (recommended for remote deployments)
1. Access Code Server at http://localhost:8888 or https://code-server.yourdomain.com
2. Navigate to the mkdocs directory `/home/coder/mkdocs/`
3. Open a terminal in Code Server
4. Run the build command:
```bash
cd /home/coder/mkdocs
mkdocs build
```
#### Option 2: Locally on your machine
1. Navigate to the mkdocs directory in your project:
```bash
cd /home/bunker-admin/Changemaker/mkdocs
```
2. Run the build command:
```bash
mkdocs build
```
After building, the static site files will be generated in the `mkdocs/site` directory, which is automatically mounted to the Nginx server (mkdocs-site-server). Your website will be immediately available at:
- Locally: http://localhost:4001
- With Cloudflare: https://yourdomain.com
### Development vs Production
- During **development**, you can use the MkDocs live server at port 4000, which automatically rebuilds when you make changes
- For **production**, build your site as described above and let the Nginx server at port 4001 serve the static files
## Accessing Your Services
The **Homepage** acts as a central dashboard for all your Changemaker services. You can access it at:
- Locally: http://localhost:3011 or http://your-server-ip:3011
- With Cloudflare: https://homepage.yourdomain.com
The Homepage will display links to all your deployed services, making it easy to navigate your Changemaker ecosystem.
After installation and cloudflare deployment you can also access individual services at the following URLs:
- Website: https://yourdomain.com
- Homepage: https://homepage.yourdomain.com
- Live Preview: https://live.yourdomain.com
- Excalidraw: https://excalidraw.yourdomain.com
- Listmonk: https://listmonk.yourdomain.com
- Monica CRM: https://monica.yourdomain.com
- MkDocs: https://yourdomain.com
- Flatnotes: https://flatnotes.yourdomain.com
- Code Server: https://code-server.yourdomain.com
- Ollama: https://ollama.yourdomain.com
- OpenWebUI: https://open-web-ui.yourdomain.com
- Gitea: https://gitea.yourdomain.com
- Portainer: https://portainer.yourdomain.com
- Mini QR: https://mini-qr.yourdomain.com
- Ferdium: https://ferdium.yourdomain.com
- Answer: https://answer.yourdomain.com
- NocoDB: https://nocodb.yourdomain.com
- n8n: https://n8n.yourdomain.com
- ConvertX: https://convertx.yourdomain.com
- Rocket.Chat: https://rocket.yourdomain.com
## Troubleshooting
If you encounter issues:
1. Check the Docker logs:
```bash
docker compose logs
```
2. Verify service status:
```bash
docker compose ps
```
3. Ensure your Cloudflare Tunnel is running:
```bash
sudo systemctl status cloudflared
```
4. Check CNAME records in your Cloudflare dashboard.
For additional help, please file an issue on our GitHub repository.