How Freedom Feels
So my college decided to block literally everything. YouTube? Blocked. Reddit? Blocked. Even Stack Overflow sometimes (yes, really).
TL;DR - Just Want It Working?
pip install how-freedom-feels
freedom --connect
That's it. If it works, you're done. If not, keep reading.
The Problem (aka My College IT Department Goes Too Far)
Not only did they block half the internet, they also blacklisted every VPN domain they could find. NordVPN? Blocked. ExpressVPN? Blocked. Even the small obscure ones. You can't even reach their websites to download configs. Big brain move by the IT department, honestly.
The Solution (aka How I Got My Internet Back)
Here's the thing - they can't blacklist domains that don't exist yet. So I made this tool that grabs VPN configs from random cloud servers (AWS, Linode, Google Cloud - wherever I feel like hosting that week).
By default, it connects to my servers. But fair warning: sometimes I forget to pay the AWS bill or just turn off the EC2 instance for fun. If it doesn't work, don't panic - just spin up your own server and use --url to point to it.
Installation & Quick Start
Install
pip install how-freedom-feels
Connect
freedom --connect
Want to Use Your Own Server?
freedom --connect --url https://your-domain.com/wg0.conf
What You Actually Need (Requirements)
First, you need WireGuard. Yeah, you actually have to install something. I know, shocking.
- WireGuard: https://www.wireguard.com/install/ (just click and install, it's not rocket science)
- Python 3.7+ (if you're in college and don't have Python installed, we need to talk)
Note: If you get an error about WireGuard not being installed, install it first, then run pip install how-freedom-feels again.
Want to Edit This and Use Your Own Domain?
Feel free to fork this, clone the source, and change the default domain to yours LOL. Just edit how_freedom_feels/core.py and change DEFAULT_CONFIG_URL to whatever you want.
class FreedomConnect:
DEFAULT_CONFIG_URL = "https://your-domain.com/your-config.conf" # Change this!
Then build and use it locally, or publish your own version. I don't care, it's MIT licensed.
Installation
pip install how-freedom-feels
That's it. No 47-step process, no "make sure to configure your DNS" nonsense. Just install and go.
Quick Start (For the Impatient)
# Connect to my server (if it's running, no promises)
freedom --connect
# Connect to your own server (recommended because trust issues)
freedom --connect --url https://your-domain.com/wg0.conf
# Disconnect (when you're done procrastinating)
freedom --disconnect
# Check if you're actually connected
freedom --status
Usage
Connect with default config
freedom --connect
Connect with custom domain/URL
freedom --connect --url https://your-domain.com/config.conf
Connect with custom parameters
freedom --connect --url https://your-domain.com/config.conf --timeout 30
Disconnect
freedom --disconnect
Check status
freedom --status
Python API
from how_freedom_feels import FreedomConnect
# Connect with default config
client = FreedomConnect()
client.connect()
# Connect with custom URL
client = FreedomConnect(config_url="https://your-domain.com/config.conf")
client.connect()
# Connect with custom parameters
client = FreedomConnect(
config_url="https://your-domain.com/config.conf",
timeout=30,
interface_name="wg0",
persist=True
)
client.connect()
# Disconnect
client.disconnect()
What It Does
- Installs in 2 seconds with pip (because your time is valuable)
- Connects to my servers by default (or yours, I'm not your boss)
- Actually cleans up after itself (looking at you, other VPN tools)
- Works from command line OR Python (flexibility, wow)
- Doesn't leave config files lying around like breadcrumbs
What You Actually Need
- Python 3.7 or newer (seriously, if you're on Python 2.7, what year is it?)
- WireGuard installed (https://www.wireguard.com/install/)
wg-quickin your PATH (the installer does this, don't panic)
All the Flags and Stuff
--connect, -c: Actually connect to the VPN (novel concept)--disconnect, -d: Turn it off when you're done--status, -s: Check if it's working (spoiler: it probably is)--url, -u: Point to your own server (trust no one, not even me)--timeout, -t: How long to wait before giving up (default: 10 seconds)--interface, -i: Custom interface name (if you're feeling fancy)--no-verify-ssl: Skip SSL checks (not recommended but hey, you do you)
Setting Up Your Own Server
You'll need to set up your own WireGuard server on AWS, Linode, Google Cloud, or any VPS provider.
Quick steps:
- Spin up a Linux server (Ubuntu recommended)
- Install WireGuard:
sudo apt install wireguard - Generate keys and create configs
- Host your config file on a web server
- Use
freedom --connect --url https://your-server.com/config.conf
For detailed instructions, check out EC2_SETUP_FOR_BEGINNERS.md in the GitHub repository or search for "WireGuard server setup" guides online.
How This Actually Works
- Downloads a WireGuard config from wherever you told it to
- Saves it temporarily (don't worry, it deletes it after)
- Runs
wg-quickto connect - Cleans up like a responsible program
Why Your College Can't Block This
Here's the secret: network admins blacklist known VPN domains. They've got NordVPN.com, ExpressVPN.com, all the big names. But your random AWS EC2 instance at ec2-54-123-45-67.compute.amazonaws.com? Yeah, that's not on their list. You're welcome.
License
MIT License
Metadata
Release files for how-freedom-feels 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| how_freedom_feels-0.1.7.tar.gz | 8.2 kB | Without provenance | Details for how_freedom_feels-0.1.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| how_freedom_feels-0.1.7-py3-none-any.whl | Python 3 | none | any | Details for how_freedom_feels-0.1.7-py3-none-any.whl |
Total release size: 16.6 kB
Release files / how_freedom_feels-0.1.7.tar.gz
| Download URL | how_freedom_feels-0.1.7.tar.gz |
|---|---|
| Size | 8.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0ae36ec293ab1be7823eea4c1304dde2f5432e70a6cd040cb220b849564e93d7
|
|
BLAKE2b-256 checksum How to use checksums |
5a8912a93e6a4cafe8bee74145b53e3eed5c8e1873a630c01d36615462d4a31c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.6
|
Release files / how_freedom_feels-0.1.7-py3-none-any.whl
| Download URL | how_freedom_feels-0.1.7-py3-none-any.whl |
|---|---|
| Size | 8.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a0306a0ae0746734ea615af24dc89a843325881e9914b482ddaffb3d72aedb4b
|
|
BLAKE2b-256 checksum How to use checksums |
a9e0473f5ea13c3bc9a2114dfeb5077b074e6602413873d63a289bab464fdd7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.6
|
Security for how-freedom-feels 0.1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.