Cardserver
A simple social media card renderer written in PhantomJS – screenshot card-like webpages on-the-fly
Cardserver is largely based on how Pieter generates shareable pictures for Nomad List – built for Coworkations
Setup
npm install -g cardserver
cardserver
Usage
Cardserver performs HTML requests based on PNG requests like so:
Markup
You’ll want meta tags something like these:
<meta itemprop="image" content="https://coworkations.com/cards/coworkations.png">
<meta property="og:image" content="https://coworkations.com/cards/coworkations.png">
<meta name="twitter:image" content="https://coworkations.com/cards/coworkations.png">
Caching
Cardserver serves basic caching headers and works great with Cloudflare
The script serves a cache maxage of a week, and requires .png
file extension so that Cloudflare will cache it without any additional configuration (page rules are required otherwise)
Debugging
Fonts
PhantomJS can be a jerk about fonts, especially Google Fonts, you may need to download TTF’s and dump them somewhere like /usr/share/fonts/truetype
(Ubuntu), you can get the URL to Google’s TTF’s by blanking out your User-Agent
(otherwise it’ll probably serve you WOFF2’s)
NGINX
The simplest way to hook cardserver up is to route all PNG traffic to it via NGINX:
location ~ ^/cards/.*\.png$ {
proxy_pass http://127.0.0.1:9100;
}
Supervisor
Supervisor is handy to keep cardserver running:
[program:cardserver]
command = cardserver
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/cardserver.log
redirect_stderr = true