How to set up Mastodon using Docker Compose

Prerequisites#

  • Docker and Docker Compose installed
  • Domain name pointing to your server

1. Create Project Directory#

mkdir mastodon
cd mastodon

2. Create Docker Compose File#

Create a docker-compose.yml file:

version: '3'
services:
  db:
    restart: always
    image: postgres:14-alpine
    shm_size: 256mb
    networks:
      - internal_network
    healthcheck:
      test: ['CMD', 'pg_isready', '-U', 'postgres']
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_HOST_AUTH_METHOD=trust

  redis:
    restart: always
    image: redis:7-alpine
    networks:
      - internal_network
    healthcheck:
      test: ['CMD', 'redis-cli', 'ping']
    volumes:
      - redis_data:/data

  web:
    restart: always
    image: tootsuite/mastodon:latest
    networks:
      - external_network
      - internal_network
    healthcheck:
      test: ['CMD-SHELL', 'wget -q --spider http://localhost:3000/health || exit 1']
      timeout: 10s
    depends_on:
      - db
      - redis
    environment:
      - DB_HOST=db
      - DB_USER=postgres
      - DB_NAME=postgres
      - DB_PASS=
      - REDIS_HOST=redis
      - LOCAL_DOMAIN=your-domain.com
      - SINGLE_USER_MODE=false
      - SMTP_SERVER=smtp.mailgun.org
      - SMTP_PORT=587
      - SMTP_LOGIN=your-smtp-login
      - SMTP_PASSWORD=your-smtp-password
      - SMTP_FROM_ADDRESS=notifications@your-domain.com
    volumes:
      - ./public/system:/mastodon/public/system
    ports:
      - "3000:3000"
    command: bash -c "rm -f /mastodon/tmp/pids/server.pid && bundle exec rails s -p 3000"

  streaming:
    restart: always
    image: tootsuite/mastodon:latest
    networks:
      - external_network
      - internal_network
    depends_on:
      - db
      - redis
    environment:
      - DB_HOST=db
      - DB_USER=postgres
      - DB_NAME=postgres
      - DB_PASS=
      - REDIS_HOST=redis
      - LOCAL_DOMAIN=your-domain.com
    volumes:
      - ./public/system:/mastodon/public/system
    ports:
      - "4000:4000"
    command: node ./streaming

  sidekiq:
    restart: always
    image: tootsuite/mastodon:latest
    networks:
      - internal_network
    depends_on:
      - db
      - redis
    environment:
      - DB_HOST=db
      - DB_USER=postgres
      - DB_NAME=postgres
      - DB_PASS=
      - REDIS_HOST=redis
      - LOCAL_DOMAIN=your-domain.com
    volumes:
      - ./public/system:/mastodon/public/system
    command: bundle exec sidekiq

networks:
  external_network:
  internal_network:
    internal: true

volumes:
  postgres_data:
  redis_data:

3. Create Environment File#

Create a .env.production file with your configuration:

Key Life Advice from People in Their 40s to Those in Their 20s

Key Life Advice from People in Their 40s to Those in Their 20s#

Physical Health & Self-Care#

  • Take care of your teeth - they’re the only set you’ll ever have
  • Take care of your knees and back
  • Stretch every day or at least more than never - stay limber because once flexibility is gone, it’s almost impossible to get back
  • Don’t wait to get in shape - start working out now in whatever way you enjoy
  • Use sunscreen and drink plenty of water

Mental Health & Self-Perception#

  • Stop caring what other people think - this was one of the most emphasized points
  • You’re not special, no one cares what you do, and the sooner you accept it, the sooner you can be at peace with yourself
  • Don’t take yourself too seriously - you’ll probably look back ten years later mildly mortified at how deep you thought you were
  • It’s okay and healthy to sit in silence - put down your phone and just be

Time & Life Perspective#

  • Time goes by very fast - never waste a day
  • Chase your dreams! You don’t want to be 80 years old regretting not traveling or pursuing your passion
  • You don’t have as much time as you think you do - do something every day, even if it’s just for yourself

Social Comparisons & Life Timelines#

  • Don’t fall into the trap of thinking everyone else your age has something you don’t
  • Once you’re out of school, there are no timelines anymore - you’re not supposed to do anything by any particular point in your life
  • Don’t worry about high school - once you’re done, no one cares except for getting your diploma

Relationships & Social Life#

  • Choose friends wisely - don’t keep friends who bring you down, only call when they need something, or discourage your growth
  • Just ask - whether it’s the person who gets your heart beating or the pay raise you deserve, things won’t come to you by themselves

Financial Wisdom#

  • Save money and invest - investments roughly double every decade
  • Doing something you like for a living is more rewarding than doing something that pays exceptionally well

Personal Growth#

  • Fail more - failure is not a catastrophe but part of the process of getting better
  • Deprogram yourself from societal lies and examine your beliefs thoroughly
  • Learn to live in the present - the past is just memory and the future is imagination

Source: Reddit comments

Comparison of WHPH and Super Productivity Apps

WHPH (Work Hard Play Hard)#

Key Features:

  • Task Management: Organize and track your daily tasks efficiently
  • Habit Tracking: Build and maintain positive habits with progress monitoring
  • Application Usage Tracking: Monitor how you spend time on different applications
  • Time Optimization: Analyze your time usage patterns and improve productivity
  • Optional data synchronization between your desktop and mobile devices over your local network
  • Available for Android, Windows, and Linux platforms

Privacy & Sync:

How to test AA and AAA batteries using a multimeter

  1. Turn the dial to a higher voltage setting - Try the “200” setting in the DC voltage (V⎓) section. This will handle voltages up to 200V.

  2. Check your connections - Make sure:

    • The black probe is firmly in the “COM” port
    • The red probe is firmly in the “VΩmA” port
    • You’re making good contact with the battery terminals
  3. Verify the battery orientation - Make sure you’re touching:

    • Black probe to the negative (-) end of the battery
    • Red probe to the positive (+) end of the battery

Iceraven and Ironfox browser comparison

Iceraven and IronFox are both open-source browsers for Android, each offering privacy and customization features but with different emphases and user audiences.

Core Features#

FeatureIceravenIronFox
Privacy & TelemetryReduced telemetry, customizable123Strongly privacy-hardened, all telemetry removed456
Add-ons/ExtensionsExtensive support, larger list than stock Firefox178Supports Firefox Android extensions6
CustomizationAbout:config, more desktop-like options127Advanced privacy defaults, stripped-down interface456
Speed & PerformanceComparable to Brave/Chrome; resource-optimized89Lightweight, slightly faster than stock Firefox6
Main FocusCustomization, extension and power-user features12Privacy, de-bloated and anti-tracking465
UpdatesCommunity-driven, slower but steady210Active, responsive to user issues54
Official ChannelsGithub APK releases, not on Play Store128F-Droid/Accrescent, Github, not on Play Store46

Iceraven Browser#

  • Built on stable Firefox for Android, with a focus on more add-on availability and configuration options like about:config1112.
  • Appeals to users who want to replicate desktop Firefox’s customization and plugin experience on mobile111.
  • Releases and updates are maintained via Github and aren’t distributed via the Play Store128.
  • Some comments note the lack of warranties or guarantees for security; best used by power users familiar with browser internals12.

IronFox Browser#

  • Derived from Mull (itself a privacy-focused Firefox fork), with aggressive tracking and telemetry removal456.
  • Prioritizes user privacy, blocks telemetry by default, and comes with strict tracking-protection settings46.
  • Keeps features like Firefox Sync; disables or restricts features leaking data (such as WebGL, unless manually enabled)46.
  • Distributed via alternative app stores like F-Droid, Accrescent, and Github; not available on Play Store46.
  • Some advanced privacy features may result in compatibility issues with certain websites, especially those relying on features IronFox disables by default4.

Summary#

Iceraven is ideal for those wanting a “power-user” browser with deep customization and a broad add-on library, making it similar to desktop Firefox in spirit1117. IronFox is best for users who place privacy first, seeking a Firefox-based browser that automatically strips out telemetry and unnecessary features for a lightweight, secure experience54612. Both offer more control and privacy than standard Firefox for Android, but Iceraven focuses on flexibility while IronFox focuses on privacy hardening. 1314151617181920

Implementing TOGAF using SCRUM methodolohy

Implementing TOGAF (The Open Group Architecture Framework) using Scrum requires blending the structured, enterprise-wide approach of TOGAF with the agile, iterative delivery model of Scrum. Below is a step-by-step guide to achieve this:


1. Understand TOGAF and Scrum Synergy#

  • TOGAF provides a high-level framework for enterprise architecture (EA) with phases like ADM (Architecture Development Method).
  • Scrum is an agile methodology for iterative software/product development with Sprints, backlogs, and cross-functional teams.
  • Goal: Use Scrum to execute TOGAF phases incrementally while maintaining agility.

2. Map TOGAF ADM Phases to Scrum Sprints#

Instead of executing TOGAF linearly, break it into iterative cycles (Sprints):

Things to do and questions to ask when starting a new contract

Before starting a contract, consider the following:

  • Is a BPSS check necessary?
  • Is a DBS check necessary?
  • Is the start date dependent on the client providing a laptop and completing setup?

Red Flags and Lessons Learned

  • Be cautious when:
    • Code reviews are done by someone not actively working with you or partially working with you.
    • Organizations use ServiceNow for project requests instead of support/change tickets.
    • There are no operational tasks done in a squad/team.
    • The lead engineer is not working on your project.
  • Best practices:
    • Get to know all ongoing projects before focusing on one.
    • Create a onboarding Jira ticket if possible.
    • Conduct 1-to-1 meetings with all team members.
    • Focus on making a positive impact and building workplace relationships rather than just performance.

Questions to Ask the Client

Consulting Framework

To determine the viability of a consulting project, consider the following factors:

  1. Can the client easily find a solution online?
  • Ideally, the answer should be “no”, indicating that the problem requires specialized expertise.
  1. What are the consequences of a failed solution?
  • The cost of failure should be significant, but not catastrophic. This could include financial losses, reputational damage, or operational disruptions.
  1. How quickly can you deliver a solution?
  • The faster you can deliver a working solution, the better. This demonstrates your value to the client and helps build trust.
  1. How confident are you in your ability to deliver a great solution?
  • You should be 100% confident in your ability to deliver a high-quality solution. Anything less may undermine the client’s trust and make it harder to close the deal.

Book Binding

Bookbinding is a great hobby to pick up! Here are some benefits:

  • You can create personalized gifts for your friends and family.
  • It’s a healthy pastime that can improve your mental health.
  • Bookbinding allows you to stay connected with people, whether through creating gifts or joining a community of bookbinders.

Equipments and materials I use#

50Pcs Hot Melt Glue Strips 285mm Card Making Thermal Sticky for Book Binding | eBay

Incomplete notes on Personal Finance

Notes on budgeting strategies, savings goals, Investments: Stocks, bonds, real estate, retirement planning etc and Financial literacy: personal finance, taxes, insurance, and financial planning.

  • Quantified Self:

    • Income sources (salary, freelance work, investments)
    • Expenses (fixed and variable)
    • Budget allocations (groceries, utilities, entertainment, etc.)
    • Savings rate
    • Debt payments (credit cards, loans, mortgages)
    • Credit score
    • Net worth calculation
    • Investment portfolio value
    • Investment contributions
    • Investment returns or losses
    • Retirement savings progress
    • Emergency fund balance
    • Insurance premiums paid
    • Tax-related activities (filing deadlines, documentation)
    • Financial goals progress
    • Money-saving strategies implemented
    • Cash flow management
    • Charity or donations made
    • Subscription services (cost, frequency of use)
    • Cost-cutting measures taken (e.g., negotiating bills, cancelling unused subscriptions)
    • Income earned
    • Expenses tracked
    • Budget adhered to
    • Savings accumulated
    • Investments made
    • Debt paid off
    • Credit score monitored
    • Financial goals set
    • Financial independence progress
    • Retirement planning undertaken
    • Emergency fund maintained
    • Insurance coverage assessed
    • Taxes filed
    • Estate planning considered
    • Financial literacy efforts made
    • Philanthropy or charitable giving practiced
    • Financial setbacks overcome
    • Financial milestones celebrated
  • Invest in stocks, mutual funds, or other assets.