Skip to content

2025

AI and Coding

Gemini CLI

The Gemini CLI is a powerful tool for AI assisted coding, it provides a generous daily usage quota for free.

Installation

To install the Gemini CLI, simply run the following command:

npm install -g gemini-cli

API Key

Get the API Key from here

Set it as an environment variable:

Bash

export GEMINI_API_KEY=your_api_key_here

Windows PowerShell

$env:GEMINI_API_KEY = "AIs**********od"

Usage

Navigate to your project directory and run:

gemini

Monitor token usage

You can monitor your token usage by navigating to https://aistudio.google.com/usage

Usage Ideas

  • Documentation: Talk to the agent and build your documentation like this.

  • Boilerplate: Generate boilerplate code for your project using tools like for react use npx create-react-app my-app and then engage with the agent to customize it.

Blog support just landed

Hey there! You're looking at our new blog, built with the brand new built-in blog plugin. With this plugin, you can easily build a blog alongside your documentation or standalone.

Proper support for blogging, as requested by many users over the past few years, was something that was desperately missing from Material for MkDocs' feature set. While everybody agreed that blogging support was a blind spot, it was not obvious whether MkDocs could be extended in a way to allow for blogging as we know it from Jekyll and friends. The built-in blog plugin proves that it is, after all, possible to build a blogging engine on top of MkDocs, in order to create a technical blog alongside your documentation, or as the main thing.

Synology NAS Setup Guide

A comprehensive guide covering external access configuration and media management services for your Synology NAS.

This guide will walk you through setting up your Synology NAS for external access and configuring the popular *arr stack for automated media management.

Access outside home

There are several methods to access your Synology NAS from outside your home network:

Synology Quickconnect

The easiest method provided by Synology for remote access without complex network configuration.

Cloudflare

Using Cloudflare's services for secure remote access with additional features like DNS management and security.

Tailscale

A modern VPN solution that creates a secure mesh network between your devices.

Port forwarding

Traditional method of opening specific ports on your router to allow external access.

*arr Services

The *arr services (Sonarr, Radarr, Lidarr, etc.) provide automated downloading and organization of media content.

Prerequisites

Before setting up the *arr services, ensure you have:

  • Docker Container Manager installed: Container Manager supports docker compose projects
  • Docker user created: Make a note of the UID and GID for proper permissions
  • Shared folders created:
  • docker-compose - for your docker compose projects
  • media - for your media files
  • downloads - for downloaded content
  • Protocol understanding: Familiarity with Torrent and Usenet protocols
  • Private trackers knowledge (Optional): Understanding of private trackers and their usage

Docker Compose Configuration

Here's a complete docker-compose setup for the full *arr stack:

version: '3.5'
services:
  jackett:
    image: linuxserver/jackett:latest
    container_name: jackett
    restart: unless-stopped
    volumes:
      - ./jackett:/config
      - ../../../media/torr:/downloads
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    ports:
      - 9117:9117
    network_mode: bridge

  sonarr:
    image: linuxserver/sonarr:latest
    container_name: sonarr
    restart: unless-stopped
    volumes:
      - ./sonarr:/config
      - ../../../media/torr:/downloads
      - ../../../media/tv:/tv
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    ports:
      - 8989:8989
    network_mode: bridge

  radarr:
    image: linuxserver/radarr:latest
    container_name: radarr
    restart: unless-stopped
    volumes:
      - ./radarr:/config
      - ../../../media/torr:/downloads
      - ../../../media/English Movies:/movies
      - ../../../media/torr:/data
      - ../../../../volumeUSB1/usbshare:/14tb
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    ports:
      - 7878:7878
    network_mode: bridge

  lidarr:
    image: linuxserver/lidarr:latest
    container_name: lidarr
    restart: unless-stopped
    volumes:
      - ./lidarr:/config
      - ../../../media/torr:/downloads
      - ../../../media/English Music:/en-music
      - ../../../media/HindiMusic:/hi-music
      - ../../../media/torr:/data
      - ../../../../volumeUSB1/usbshare:/14tb
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    ports:
      - 8686:8686
    network_mode: bridge

  prowlarr:
    image: linuxserver/prowlarr:latest
    container_name: prowlarr
    restart: unless-stopped
    volumes:
      - ./prowlarr:/config
      - ../../../media/torr:/downloads
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    ports:
      - 9696:9696
    network_mode: bridge

  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    container_name: flaresolverr
    restart: unless-stopped
    volumes:
      - ./flaresolverr:/config
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    ports:
      - 8191:8191
    network_mode: bridge

  overseerr:
    image: sctx/overseerr:latest
    container_name: overseerr
    restart: unless-stopped
    volumes:
      - ./overseerr:/app/config
      - ../../../media/torr:/downloads
      - ../../../media/English Tv:/tv
      - ../../../media/English Movies:/movies
      - ../../../media/torr:/data
      - ../../../../volumeUSB1/usbshare:/14tb
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    ports:
      - 5055:5055
    network_mode: bridge

  nzbget:
    image: linuxserver/nzbget:latest
    container_name: nzbget
    restart: unless-stopped
    volumes:
      - ./nzbget:/config
      - ../../../media/torr:/downloads
      - ../../../media/torr:/data
      - ../../../../volumeUSB1/usbshare:/14tb
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    ports:
      - 6789:6789
    network_mode: bridge

  maintainerr:
    image: ghcr.io/jorenn92/maintainerr:latest
    container_name: maintainerr
    restart: unless-stopped
    user: 1032:100
    volumes:
      - ./maintainerr:/opt/data
    environment:
      - TZ=America/Los_Angeles
    ports:
      - 6246:6246
    network_mode: bridge

  calibre-web-automated:
    image: crocodilestick/calibre-web-automated:latest
    container_name: calibre-web-automated
    restart: unless-stopped
    environment:
      - PUID=1032
      - PGID=100
      - TZ=America/Los_Angeles
    volumes:
      - ./calibre-web-automated:/config
      - ../../../media/eBooks:/books
      - ../../../homes/amit/Drive/Books/ingest:/cwa-book-ingest
    ports:
      - 8083:8083
    network_mode: bridge

Service Overview

  • Jackett: Torrent indexer proxy
  • Sonarr: TV show management
  • Radarr: Movie management
  • Lidarr: Music management
  • Prowlarr: Indexer manager for *arr applications
  • FlareSolverr: CloudFlare bypass proxy
  • Overseerr: Request management for media
  • NZBGet: Usenet downloader
  • Maintainerr: Media cleanup and maintenance
  • Calibre-Web-Automated: eBook management

Remember to adjust the PUID, PGID, timezone, and volume paths according to your specific Synology setup.