All Projects β†’ jointwt β†’ Twtxt

jointwt / Twtxt

Licence: other
πŸ“• twtxt is a Self-Hosted, Twitterβ„’-like Decentralised microBlogging platform. No ads, no tracking, your content, your data!

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Twtxt

felfele
Decentralized social application that respects your privacy
Stars: ✭ 30 (-93.83%)
Mutual labels:  social-media, social-network, decentralized
awesome-alternatives
A list of alternative websites/software to popular proprietary services.
Stars: ✭ 123 (-74.69%)
Mutual labels:  social-media, social-network, decentralized
Dandelion
a diaspora* client for Android
Stars: ✭ 100 (-79.42%)
Mutual labels:  social-network, social-media, decentralized
friendica
Friendica Communications Platform
Stars: ✭ 1,048 (+115.64%)
Mutual labels:  social-media, social-network, self-hosted
Haven
Self-hostable private blogging
Stars: ✭ 373 (-23.25%)
Mutual labels:  self-hosted, social-network, decentralized
socialx react native
The SocialX ecosystem takes the social media experience to the next level.
Stars: ✭ 20 (-95.88%)
Mutual labels:  social-media, social-network, decentralized
Friendica Addons
Addons for Friendica
Stars: ✭ 94 (-80.66%)
Mutual labels:  self-hosted, social-network, social-media
subsocial-node
NOTE: Development continues in https://github.com/dappforce/subsocial-parachain repo. Subsocial full node with Substrate/Polkadot pallets for decentralized communities: blogs, posts, comments, likes, reputation.
Stars: ✭ 73 (-84.98%)
Mutual labels:  social-media, social-network, decentralized
WorkGroup
Self-Hosted private Social Media-Intranet for Companies.
Stars: ✭ 21 (-95.68%)
Mutual labels:  social-media, social-network, self-hosted
alternative-frontends
πŸ”πŸŒ Privacy-respecting web frontends for popular services
Stars: ✭ 821 (+68.93%)
Mutual labels:  social-network, decentralized, self-hosted
sociallink
Alignments between knowledge bases and social media
Stars: ✭ 16 (-96.71%)
Mutual labels:  social-media, social-network
ticktack-network
ticktack.im
Stars: ✭ 35 (-92.8%)
Mutual labels:  decentralized, blogging
agouti
A platform for collective blogs and social media platform, forum, question and answer service. Catalog of sites (programs), site navigation and directories - facets. A community based on the PHP HLEB micro-framework.
Stars: ✭ 36 (-92.59%)
Mutual labels:  social-network, blogging
squeaknode
Peer-to-peer status feed πŸ“œ with posts unlocked by Lightning ⚑
Stars: ✭ 29 (-94.03%)
Mutual labels:  social-media, self-hosted
Ocelot-Social
Free and open-source social network for active citizenship.
Stars: ✭ 49 (-89.92%)
Mutual labels:  social-media, social-network
Pepaverse
Pepaverse is an open source social network build with nodejs, mongoDB, passportjs and socket.io
Stars: ✭ 16 (-96.71%)
Mutual labels:  social-media, social-network
crabber
A Twitter clone written in Python + Flask with extended features and a focus on inclusivity.
Stars: ✭ 42 (-91.36%)
Mutual labels:  social-media, social-network
gotosocial
Golang fediverse server.
Stars: ✭ 400 (-17.7%)
Mutual labels:  social-media, social-network
pH4Social
πŸ“£ Social Networking Software built with Laravel PHP framework and Bootstrap.
Stars: ✭ 27 (-94.44%)
Mutual labels:  social-media, social-network
clubi
A group-oriented social media platform written in Laravel and Vue
Stars: ✭ 29 (-94.03%)
Mutual labels:  social-media, social-network

twtxt

GitHub All Releases Docker Cloud Build Status Docker Pulls Docker Image Size (latest by date)

Go Report Card codebeat badge GoDoc GitHub license

πŸ“• twtxt is a Self-Hosted, Twitterβ„’-like Decentralised micro-Blogging platform. No ads, no tracking, your content, your data!

Technically twtxt is a multi-user twtxt client in the form of a web app and api. It supports multiple users and also hosts user feeds directly and provides a familiar "social" experience with minimal user profiles.

It also supports "rich" text by utilising Markdown as well as multimedia such as photos, videos and even audio.

There is also a set of Mobile Apps available for both the App Store and Play Store.

There is also a publicly (free) available Pod available at:

NOTE: I, James Mills, run this first (of which I hope to be many) twtxt instance on pretty cheap hardware on a limited budget. Please use it fairly so everyone can enjoy using it equally! Please be sure to read the /privacy policy before signing up (pretty straight forward) and happy Twt'ing! πŸ€—

Sponsor this project to support the development of new features, improving existings ones and fix bugs! Or contact Support for help with running your own Pod! Or host your own Twtxt feed and support our Extensions.

Demo_1

Mobile Apps

Goryon for Twt available for both the App Store and Play Store.

Install Goryon today on your mobile device here

Hosted Pods

This project offers fully-managed, 1-click instances of this platform we call Twt.social pods.

Please visit Twt.social to get your pod today!

NOTE: As of 15th Aug 2020 (comment announcement blog), this is completely FREE and we invite anyone to contact us for an invite code to be one of the first few pod owners!

Installation

Pre-built Binaries

NOTE: Please don't use the pre-built binaries until Issue #250 is resolved. Please build from source or use the Docker Images. Thank you. πŸ™‡β€β™‚οΈ

As a first point, please try to use one of the pre-built binaries that are available on the Releases page.

Using Homebrew

We provide Homebrew formulae for macOS users for both the command-line client (twt) as well as the server (twtd).

brew tap jointwt/twtxt
brew install twtxt

Run the server:

twtd

Run the command-line client:

twt

Building from source

This is an option if you are familiar with Go development.

  1. Clone this repository (this is important)
git clone https://github.com/jointwt/twtxt.git
  1. Install required dependencies (this is important)

Linux, macOS:

make deps

Note that in order to get the media upload functions to work, you need to install ffmpeg and its associated -dev packages. Consult your distribution's package repository for availability and names.

FreeBSD:

  • Install gmake
  • Install pkgconf that brings pkg-config gmake deps
  1. Build the binaries

Linux, macOS:

make

FreeBSD:

gmake

Usage

Command-line Client

  1. Login to your Twt.social pod:
$ ./twt login
INFO[0000] Using config file: /Users/prologic/.twt.yaml
Username:
  1. Viewing your timeline
$ ./twt timeline
INFO[0000] Using config file: /Users/prologic/.twt.yaml
> prologic (50 minutes ago)
Hey @rosaelefanten πŸ‘‹ Nice to see you have a Twtxt feed! Saw your [Tweet](https://twitter.com/koehr_in/status/1326914925348982784?s=20) (_or at least I assume it was yours?_). Never heard of `aria2c` till now! 🀣 TIL

> dilbert (2 hours ago)
Angry Techn Writers β€£ https://dilbert.com/strip/2020-11-14
  1. Making a Twt (post):
$ ./twt post
INFO[0000] Using config file: /Users/prologic/.twt.yaml
Testing `twt` the command-line client
INFO[0015] posting twt...
INFO[0016] post successful

Deploy with Docker Compose

Run the compose configuration:

docker-compose up -d

Then visit: http://localhost:8000/

Web App

Run twtd:

twtd -R

NOTE: Registrations are disabled by default so hence the -R flag above.

Then visit: http://localhost:8000/

You can configure other options by specifying them on the command-line:

$ ./twtd --help
Usage of ./twtd:
  -E, --admin-email string          default admin user email (default "[email protected]")
  -N, --admin-name string           default admin user name (default "Administrator")
  -A, --admin-user string           default admin user to use (default "admin")
      --api-session-time duration   timeout for api tokens to expire (default 240h0m0s)
      --api-signing-key string      secret to use for signing api tokens (default "PLEASE_CHANGE_ME!!!")
  -u, --base-url string             base url to use (default "http://0.0.0.0:8000")
  -b, --bind string                 [int]:<port> to bind to (default "0.0.0.0:8000")
      --cookie-secret string        cookie secret to use secure sessions (default "PLEASE_CHANGE_ME!!!")
  -d, --data string                 data directory (default "./data")
  -D, --debug                       enable debug logging
      --feed-sources strings        external feed sources for discovery of other feeds (default [https://feeds.twtxt.net/we-are-feeds.txt,https://raw.githubusercontent.com/jointwt/we-are-twtxt/master/we-are-bots.txt,https://raw.githubusercontent.com/jointwt/we-are-twtxt/master/we-are-twtxt.txt])
      --magiclink-secret string     magiclink secret to use for password reset tokens (default "PLEASE_CHANGE_ME!!!")
  -F, --max-fetch-limit int         maximum feed fetch limit in bytes (default 2097152)
  -L, --max-twt-length int          maximum length of posts (default 288)
  -U, --max-upload-size int         maximum upload size of media (default 16777216)
  -n, --name string                 set the pod's name (default "twtxt.net")
  -O, --open-profiles               whether or not to have open user profiles
  -R, --open-registrations          whether or not to have open user registgration
      --session-expiry duration     timeout for sessions to expire (default 240h0m0s)
      --smtp-from string            SMTP From to use for email sending (default "PLEASE_CHANGE_ME!!!")
      --smtp-host string            SMTP Host to use for email sending (default "smtp.gmail.com")
      --smtp-pass string            SMTP Pass to use for email sending (default "PLEASE_CHANGE_ME!!!")
      --smtp-port int               SMTP Port to use for email sending (default 587)
      --smtp-user string            SMTP User to use for email sending (default "PLEASE_CHANGE_ME!!!")
  -s, --store string                store to use (default "bitcask://twtxt.db")
  -t, --theme string                set the default theme (default "dark")
  -T, --twts-per-page int           maximum twts per page to display (default 50)
  -v, --version                     display version information
      --whitelist-domain strings    whitelist of external domains to permit for display of inline images (default [imgur\.com,giphy\.com,reactiongifs\.com,githubusercontent\.com])
pflag: help requested

Configuring your Pod

At a bare minimum you should set the following options:

  • -d /path/to/data
  • -s bitcask:///path/to/data/twtxt.db (we will likely simplify/default this)
  • -R to enable open registrations.
  • -O to enable open profiles.

Most other configuration values should be done via environment variables.

It is recommended you pick an account you want to use to "administer" the pod with and set the following environment values:

  • ADMIN_USER=username
  • ADMIN_EMAIL=email

In order to configure email settings for password recovery and the /support and /abuse endpoints, you should set appropriate SMTP_ values.

It is highly recommended you also set the following values to secure your Pod:

  • API_SIGNING_KEY
  • COOKIE_SECRET
  • MAGICLINK_SECRET

These values should be generated with a secure random number generator and be of length 64 characters long. You can use the following shell snippet to generate secrets for your pod for the above values:

$ cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1

DO NOT publish or share these values. BE SURE to only set them as env vars.

Production Deployments

Docker Swarm

You can deploy twtxt to a Docker Swarm cluster by utilising the provided twtxt.yaml Docker Stack. This also depends on and uses the Traefik ingress load balancer so you must also have that configured and running in your cluster appropriately.

docker stack deploy -c twtxt.yml

In the News

Sponsor

Support the ongoing development of twtxt!

Sponsor

Contributing

Interested in contributing to this project? You are welcome! Here are some ways you can contribute:

  • File an Issue -- For a bug, or interesting idea you have for a new feature or just general questions.
  • Submit a Pull-Request or two! We welcome all PR(s) that improve the project!

Please see the Contributing Guidelines and checkout the Developer Documentation or over at /docs.

Please note: If you wish to contribute to this project off-Github please get in touch with us and let us know! We have this project mirrored to private Git hosting using Gitea and can fully support external collaborator this way (even via email!).

Contributors

Thank you to all those that have contributed to this project, battle-tested it, used it in their own projects or products, fixed bugs, improved performance and even fix tiny typos in documentation! Thank you and keep contributing!

You can find an AUTHORS file where we keep a list of contributors to the project. If you contribute a PR please consider adding your name there. There is also Github's own Contributors statistics.

Stargazers over time

Stargazers over time

Related Projects

License

twtxt is licensed under the terms of the MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].