Embetty is a Node.js proxy service that allows you to embed Tweets and videos from YouTube, Facebook, and Vimeo on your website without compromising your visitor’s privacy. It is developed by Heise online and is released under the MIT license.


For this guide you should be familiar with the basic concepts of


Embetty is released under the MIT License.


We’re using Node.js version 20, but others should work too:

[isabell@stardust ~]$ uberspace tools version use node 20
Selected Node.js version 20
The new configuration is adapted immediately. Minor updates will be applied automatically.
[isabell@stardust ~]$

Setup your URL:

[isabell@stardust ~]$ uberspace web domain list
[isabell@stardust ~]$

Twitter credentials (optional)


If you only want to embed videos, you can skip this step.

In order to access the tweets you want to embed, you need to set-up a Twitter application. For ease of use, we’ll assume that you’re using the account that you want to use to access Twitter through Embetty to add the application.

After adding the Twitter application, click the manage keys and access tokens link in the Application’s settings and click Create my access token. Write down:

  • the Access Token, e.g. 47114223-BZC77d4304f0EE547630e56f2d84c4fedf6a41QU3

  • and the Access Token Secret, e.g. biQ1a114dabFBB10022291691e499c4b3a39402c8dZAH

  • the Consumer Key (API Key), e.g. E4a38941Jb4efbac38GE854a62

  • the Consumer Secret (API Secret), e.g. d775b93f776dc6577B3f2C212aE080c24f308e28803d0877a2


Make sure you write down you own values and not our examples.


Use npm to install the latest version of Embetty server:

[isabell@stardust ~]$ npm install -g @heise/embetty-server
/home/isabell/bin/embetty-start -> /home/isabell/lib/node_modules/@heise/embetty-server/bin/embetty-start
/home/isabell/bin/embetty -> /home/isabell/lib/node_modules/@heise/embetty-server/bin/embetty
added 192 packages in 20s
[isabell@stardust ~]$


Setup daemon

Create ~/etc/services.d/embetty.ini with the following content:


Replace all place holders such as <username> with your actual values!

command=embetty start


If you don’t need Twitter support, you can leave out the TWITTER_ variables.

In our example this would be:

command=embetty start

After creating the configuration, tell supervisord to refresh its configuration and start the service:

[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE                            RUNNING   pid 26020, uptime 0:03:14
[isabell@stardust ~]$

If it’s not in state RUNNING, check your configuration.

Configure web server


Embetty is running on port 3000. If you want to host Embetty on the same Uberspace as your website, use /embetty as URI.

To make the application accessible from the outside, configure a web backend:

[isabell@stardust ~]$ uberspace web backend set / --http --port <port>
Set backend for / to port <port>; please make sure something is listening!
You can always check the status of your backend using "uberspace web backend list".
[isabell@stardust ~]$


To make use of embetty, you’ll have to add two html elements to your website. A meta tag pointing to your embetty-server and a script tag pointing to the embetty.js file which is distributed by your embetty-server.

This allows you to make use of the embetty-html-elements to embed tweets, toots and videos.

<!DOCTYPE html>
<html lang="en">
    <meta data-embetty-server="/path/to/embetty-server" />
    <script async src="/path/to/embetty-server/embetty.js"></script>
    <embetty-tweet status="1166685910030790662"></embetty-tweet>

Please refer to Embetty’s quick start guide for further details.



Check the update feed regularly to stay informed about the newest version.

Use npm to update Embetty:

[isabell@stardust ~]$ npm upgrade -g @heise/embetty-server
[isabell@stardust ~]$

Tested with Embetty-Server 2.0.3, Uberspace 7.15.6

Written by: Nico Graf <hallo@uberspace.de>