Linkwarden: Use Docker Compose for Linkwarden as replacement for Pocket
Pocket will be ended by October 2025. But where to save your documents you want to read later? Here's my solution using Linkwarden on Docker...

"Pocket is a free service from Mozilla that makes it easy to discover great content that’s personalized to your interests, and save this content so you can return to it later – on any device, at any time."
I was using Pocket for many years. Unfortunately, Mozilla - the owner of Pocket - decided to discontinue this service. So I needed a replacement.
Linkwarden could be a suitable replacement, as it matches many of my requirements:
- self-hosted using Docker
- quite comfortable website
- App for iOS and iPadOS, also for Android (for more, see Linkwarden documentation)
Linkwarden needs 3 components:
- Linkwarden application: it provides the website and all functionalities
- Database: PostgreSQL is used, which is in fact my favourite for open source projects
- Meilisearch: "Meilisearch is a flexible and powerful user-focused search engine that can be added to any website or application"
Here's my docker-compose.yml
:
services:
db:
image: postgres:17
env_file: .env
restart: always
volumes:
- ./pgdata:/var/lib/postgresql/data
app:
env_file: .env
hostname: linkwarden
environment:
- DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/postgres
restart: always
image: ghcr.io/linkwarden/linkwarden:latest # comment to build from source
ports:
- 3000:3000
volumes:
- ./data:/data/data
depends_on:
- db
- meilisearch
meilisearch:
image: getmeili/meilisearch:v1.12.8
restart: always
env_file:
- .env
volumes:
- ./meili_data:/meili_data
In this case, I usedmeilisearch:v1.12.8
, but I also testedmeilisearch:latest
. When you just upgrade from an older version like 1.2.* to latest (what now is at something like 1.15), there will be an issue as Meilisearch neads an upgrade. The easiest way to resolve that is to completely remove the Meilisearch container and rundocker compose pull && docker compose up -d
again.
Additionally, there's an .env
file. These are the parameters which need to be set:
NEXTAUTH_URL=http://<hostname>/api/v1/auth
NEXTAUTH_SECRET=XxXxXxXx
DATABASE_URL=postgresql://<db hostname>:<password>@db:5432/linkwarden
POSTGRES_PASSWORD=XxXxXxXx
First, let's pull the containers:
# docker compose pull
Then, let's start them:
# docker compose up -d
After that, you'll be able to start Linkwarden using your web browser; just use the hostname and the port which was exposed by Docker:
http://<hostname>:3000
Now, Linkwarden is available (sorry, my site is already configured in German):

You can now start to add new links:

If you wish, you can also import your links from Pocket. Just export them and import in Linkwarden - Account -> Settings -> Import and Export -> Import links
In my case I use Nginx Proxy Manager - it provides a secure HTTPS connection to Linkwarden including a certificate from Let's Encrypt. And I can use it from the whole internet...