The bmannconsulting.com website
1--- 2link: https://bringyourown.computer 3tags: 4 - domains 5 - ATProtocol 6 - pds 7--- 8As one often does, I needed a domain and it's a nod to [[Bring Your Own Server]] pattern I've been tracking. 9 10This is currently on a [KVM-1](https://cart.hostinger.com/pay/144f1cd7-4a92-4084-9a78-36130197e57e?_ga=GA1.3.942352702.1711283207) at [[Hostinger]] in a German data center. 11 12## Personal Data Server 13 14The main thing that this machine does is run a [[PDS]] 15 16## Updates 17 18* Nov 15th, 2024: Installed the server on Hostinger 19* Dec 31st, 2024: [[Migrating accounts to my own PDS]] (no actual changes to the server) 20* Jan 1st, 2025: Installed Tailscale as an exit node, setup [[Taildrive]] for file sharing 21* TO DO: [[Twitter Archive to your own Bluesky AT Protocol]] 22 23### Installing on Hostinger 24 25This ended up being so simple I didn't really take notes. The [[Bluesky PDS]] has a one-liner install: 26 27``` 28wget https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh 29``` 30 31The DNS was already on Cloudflare, so added the wildcard there. Here's my post right after I did it, from my newly created account: 32 33<blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:lmmeta6tejj3fhn5xvzl5eoi/app.bsky.feed.post/3lazundqk4c2y" data-bluesky-cid="bafyreid7pbzyn4ezygqutyfsx64cfdt5bbt3ekne6ph23cji65rucw2xtq"><p lang="en">I installed my own PDS on a new KVM-1 from Hostinger. 34 35I had to comment out the OS version check in the installer (Ubuntu 22.04.1 messed it up). 36 37DNS on Cloudflare. Domain from Spaceship. 38 39Took like 15min total. This is easy!</p>&mdash; Boris (<a href="https://bsky.app/profile/did:plc:lmmeta6tejj3fhn5xvzl5eoi?ref_src=embed">@boris.bringyourown.computer</a>) <a href="https://bsky.app/profile/did:plc:lmmeta6tejj3fhn5xvzl5eoi/post/3lazundqk4c2y?ref_src=embed">November 15, 2024 at 6:43 PM</a></blockquote><script async src="https://embed.bsky.app/static/embed.js" charset="utf-8"></script> 40 41I took screenshots of new account creation via invite code and Bluesky Client: 42 43<blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:wn774ojgaemblghs6xduynyq/app.bsky.feed.post/3lazvnwr4ve2q" data-bluesky-cid="bafyreidb5ab6hafiznmp2mi64dsk7ddkosqquktgk433dqfedtcvtmrinu"><p lang="en">Huh. So you can, like, just create your own PDS. And invite codes. And make new accounts.<br><br><a href="https://bsky.app/profile/did:plc:wn774ojgaemblghs6xduynyq/post/3lazvnwr4ve2q?ref_src=embed">[image or embed]</a></p>&mdash; BringYourOwn.Computer (<a href="https://bsky.app/profile/did:plc:wn774ojgaemblghs6xduynyq?ref_src=embed">@computer.bringyourown.computer</a>) <a href="https://bsky.app/profile/did:plc:wn774ojgaemblghs6xduynyq/post/3lazvnwr4ve2q?ref_src=embed">November 15, 2024 at 7:01 PM</a></blockquote><script async src="https://embed.bsky.app/static/embed.js" charset="utf-8"></script> 44 45The one thing that isn't setup is email. This is the syntax from the docs, in the `/pds/pds.env: 46 47``` 48PDS_EMAIL_SMTP_URL=smtps://resend:<your api key here>@smtp.resend.com:465/ 49PDS_EMAIL_FROM_ADDRESS=admin@your.domain 50``` 51 52I have a [[Mailgun]] account that I use for everything that I initially 53 54#### Email with Mailgun 55 56I [opened a github issue](https://github.com/bluesky-social/pds/issues/194#issuecomment-2567188011) and ultimately solved my own problem. URLencode the username, so %40 instead of an @ sign. I also reset the password to be a simpler one without any special characters. 57 58``` 59PDS_EMAIL_SMTP_URL=smtps://username%40mail.example.com:(a password without special characters)@smtp.eu.mailgun.org:465/ 60PDS_EMAIL_FROM_ADDRESS=username@mail.example.com 61``` 62 63Works! 64## Installing Tailscale 65 66Following the [install on ubuntu steps](https://tailscale.com/kb/1476/install-ubuntu-2404) Then, ran 67 68``` 69tailscale up --advertise-exit-node 70``` 71 72The idea being, can use this VPS to route traffic out of, and potentially host other things at home or office. 73 74Got this note: 75 76``` 77Warning: IPv6 forwarding is disabled. 78Subnet routes and exit nodes may not work correctly. 79See https://tailscale.com/s/ip-forwarding 80Warning: UDP GRO forwarding is suboptimally configured on eth0, UDP forwarding throughput capability will increase with a configuration change. 81See https://tailscale.com/s/ethtool-config-udp-gro 82``` 83 84Ran the steps at the [listed url](https://tailscale.com/s/ethtool-config-udp-gro). 85 86Also, want to backup PDS repo content using [[Taildrive]]. 87 88#### Taildrive Setup 89 90I went ahead and used the give everyone access policy settings with [nodeAttr](https://tailscale.com/kb/1369/taildrive?tab=linux#add-nodeattrs-to-enable-taildrive-on-devices). That let me run this on the PDS, to share the entire PDS directory: 91 92```shell 93tailscale drive share pds /pds 94``` 95 96Then, for MacOS, turn on the File Sharing GUI options: 97 98```shell 99defaults write /Users/$(whoami)/Library/Preferences/io.tailscale.ipn.macsys.plist FileSharingConfiguration show 100``` 101 102Going to the Tailscale menu bar item and selecting settings, there is now a "Files" tab: 103 104![Screenshot of Tailscale Settings - File Sharing](/assets/2025/tailscale-files-alpha-settings.png) 105 106To access shared folders on the Mac, you [connect to the Taildrive server with the Mac Finder's built in WebDAV support](https://tailscale.com/kb/1369/taildrive?tab=macos+gui#access-directories-shared-with-taildrive). 107 108> macOS will connect to the Taildrive WebDAV server and show a Finder window with your tailnet name as a folder. Inside that folder, Taildrive will load a folder for each device in your tailnet, and any shares that are active on the devices will appear within those folders. 109 110This all worked, but unfortunately, no "pds" folder in here! OK, well I made `altariapdsbackup` as a local Mac folder. 111 112Let's see about connecting from the other end, [from the Ubuntu PDS server](https://tailscale.com/kb/1369/taildrive?tab=linux#access-directories-shared-with-taildrive-3). 113 114Going to need to install WebDAV support: `apt-get install davfs2` 115 116Then run the mount command: 117 118```shell 119mount -t davfs http://100.100.100.100:8080 /mount/tailscale 120``` 121 122Cool, it worked, I can browse to it, and yup, my Tailnet name `bmann.ca` is in there as a folder. Which is, unfortunately, empty. 123 124OK, fine, I'll go back to [actually reading the policies section again](https://tailscale.com/kb/1369/taildrive?tab=linux#define-sharing-permissions). Pasted in some more policy language, hit save, and yup! All my devices are visible, with the `pds` folder shared. 125 126![Screenshot of Mac Finder, the window says bmann.ca which is my Tailnet name. I have the bringyourown-computer folder open to display the pds folder.](/assets/2025/finder-taildrive-pds-screenshot.png) 127 128I'll open up the blocks folder so we can see the blobs that are the images posted to my account: 129 130![Cropped screenshot of Mac Finder window with a did/plc/njg... folder open, showing alist of bafk... named files](/assets/2025/finder-taildrive-pds-screenshot-blocks.png) 131 132Of course, the PDS software can display blobs, so I'll just use it to embed an image directly 😂 133 134![Yes, I am a madman who is hotlinking to a query on my PDS for a blob which is a screenshot of me migrating my account to my own PDS](https://bringyourown.computer/xrpc/com.atproto.sync.getBlob?did=did:plc:njgakmquzxdmz6t32j27hgee&cid=bafkreiee6yuonopk2dte4imfprcfshxrterudf3dnwwq2vtwxqe6fqycfy) 135 136 137