Deploy Self Hosted & Open Source Privacy Focus Web Traffic Analytics Tool (Free & Easy)
Mar 7, 2026
Ackee is a self hosted, open source web traffic tool which is focusing on privacy by default. It can be deployed in your docker environment or cloud app platform supporting docker such as Render.
It demonstrates a couple of working ways for deployment, also shows some other not working deployment although the document says supported.
Github: https://github.com/electerious/Ackee
Demo: https://demo.ackee.electerious.com/
Related Post:
✍https://blog.51sec.org/2026/02/5-min-docker-deploy-your-own-self.html
Related Videos:
🌟[5 Mins Docker] Create A Free Monitoring Site with Nagios & Add A Host with Services to Monitor - https://youtu.be/STVp1PF2IXI
🌟HetrixTools - Free Website & Server Performance Monitoring Cloud Site with 2 Year Data - https://youtu.be/m0LFzuVTtbA
🌟upptime - Free OpenSource Sites Monitoring Solution Based on Github Actions & Pages - https://youtu.be/57gzLUcop2M
🌟Five Minutes Build Your Own Free Website Monitoring Site with UptimeRobot - https://youtu.be/dJ4-tvb1pSc
🌟Deploy Self Hosted & Open Source Privacy Focus Web Traffic Analytics Tool (Free & Easy) - https://youtu.be/57nGtbQm5uo
💖Chapters:
0:00 - Introduction
2:09 - Lets start it
3:50 - 1. Create your own Mongo DB
7:52 - 2. Test Ackee Docker in Sandbox Environment
12:21 - 3. Not working deployment for Netlify & Vercel Platforms
15:26 - 4. Deploy to Render Platform
20:35 - End Scene
✅#51Sec #NetSec #Cyber #Security #CyberSecurity #HomeLab
If you found this video has some useful information, please give me a thumb up and subscribe this channel to get more updates:
⚡https://www.youtube.com/c/Netsec?sub_confirmation=1
⚡Resource Collection and Bookmarks: https://sites.51sec.org/
Learning and Sharing - 🔊海内存知己,天涯若比邻! A bosom friend afar brings a distant land near!
Discord: https://discord.gg/fCW9phn, Blog: https://blog.51sec.org
Show More Show Less View Video Transcript
0:01
[music]
0:10
Hello everyone, welcome back to Chinese
0:13
Nessac YouTube channel. In this video,
0:16
I'm going to introduce
0:18
Aki, this self-hosted
0:22
opensource analytic tool for those who
0:26
care about privacy.
0:29
Basically it's [laughter] a analytic
0:32
tools for your website or web
0:34
application which you can track who is
0:38
using it where it's coming from how long
0:41
they stay this kind of information. By
0:44
default they don't check every aspect of
0:48
your visiting. Basically they only
0:51
collect the basic information and then
0:53
they anomalize those other information
0:56
which user could be identified.
1:00
There's a way to enable that if you do
1:03
need to collecting those information by
1:05
the way which will be covered at the end
1:07
of this video.
1:10
Again, this is 100% open-source project
1:13
and which has nice UI, beautiful design,
1:17
no cookies and also have full document
1:21
GraphQL API you can use deployment. It's
1:25
interesting. It says it's supporting so
1:29
many ways to deploy it, but I did found
1:32
some of them won't work properly. For
1:35
example, netly fine. Universally won't
1:38
support it well based on my testing.
1:41
Render is good. Leway is okay but not
1:44
fully free. Zebra used to be easiest way
1:48
to do that. But uh after I test it, the
1:51
free tiers won't be able to deploy this
1:54
anymore. Anyways, I'm going to show you
1:56
how we can easily deploy it using Docker
2:00
or using a platform. I'm going to use in
2:02
render as example to show you how to
2:05
deploy that. Now let's jump into it
2:13
from the GitHub page. You should be able
2:15
to go to their own home website. You
2:19
also provide a live demo which you can
2:24
see. I like this idea. Um it can
2:27
directly go in to see all configuration
2:30
settings really feel it how it looks how
2:34
it configured it's that what you really
2:36
want. After that you can decide do you
2:39
want to try it from somewhere online or
2:42
from your self-hosted server. The
2:45
website is decent. They gave you enough
2:48
information. Documentation is okay. Does
2:51
need to be updated.
2:54
It should provide more details even with
2:57
uh those deploying method shows here. Uh
3:01
some are outdated some are missing
3:03
information. So that's why I decided I
3:07
going to give it try using this video
3:10
show you how can deploy with docker and
3:12
how you can test it and how you can
3:15
using cloud platform such as netify
3:19
and verso but the are not working. Hello
3:23
doesn't have free anymore. Render which
3:26
is still good.
3:29
Railway $1 per month which you still can
3:32
deploy one for testing. CoIP should be
3:35
okay. Zeber no free tier anymore after
3:40
February 22nd 2026.
3:44
So you won't be able to deploy it using
3:46
free tier. So now let's start with
3:49
Docker.
3:54
For the Docker deployment, you don't
3:57
need to set up a MongoDB database. Um,
4:00
you can use in Docker to run uh your own
4:03
MongoDB instance.
4:06
Then after that, you can run a key using
4:10
docker run command. My suggestion is
4:14
just using website to get your
4:17
free DB server.
4:21
So this is a free MongoDB
4:24
servers cloud website. Um you can just
4:28
sign in. I already did that using my
4:30
Google account. So you can get into um
4:33
MongoDB website with a free account and
4:37
you can creating one free project with
4:42
MongoDB instance inside. So I'm going to
4:46
run this as a key project. I don't want
4:50
to add tax to make it simple. Uh I don't
4:54
have members just using myself
4:58
as a owner for this project. After that
5:02
you need to create a cluster that's what
5:04
they call it this DB.
5:08
So there's a different option of course
5:11
we're going to use in free name it
5:14
cluster zero. I going to name it since
5:18
it's a dedicated F key. You can choose
5:21
which provider to provide this database
5:24
for you. Um also you can choose
5:26
location. I want to keep it simple. No
5:29
changes. Create deployment. So that's
5:33
pretty much it. Here they asking you to
5:37
provide in a connection IP address. This
5:40
is very interesting because we are going
5:42
to use in render to deploy it. I may not
5:45
know what exactly IP it come. So I'm
5:48
going to do something to allow the whole
5:51
world to access to it. Another
5:53
interesting part is uh username
5:56
password. I'm going to using uh key.
5:59
Yes, username password. I'm going to
6:02
make it very simple. Password 1 2 3 4.
6:06
This is just for testing. Create
6:09
database user. Done. Um now we need to
6:12
add a connection IP address. We can
6:15
close this. We can go to clusters.
6:19
They're loading your sample data set key
6:23
security quick start here. Here is where
6:26
would you like to connect from? This is
6:29
my local environment.
6:31
I going to add entries to this IP access
6:35
list. So here is interesting part. You
6:38
want to allow the world since we don't
6:41
know exactly the IP from other
6:44
providers. It's all over the world. Add
6:47
entry. So this [snorts] is going to be
6:50
allow everyone to connect into this
6:53
instance. As long as you know the host
6:55
name, you know the username password,
6:57
you're going to be able to connect into
6:58
it. Finish and close.
7:03
At this moment, our MongoDB is up and
7:08
running. And then we need to get to the
7:11
connection string. So here is the
7:13
interesting part.
7:15
This is a connecting string we're
7:18
talking about. We're going to copy it
7:20
for future. Remember password not
7:22
showing here, but we will modify that.
7:25
Copy the information for future to use.
7:28
The password is you can change it any
7:32
time but for now let me know the
7:35
password is like this.
7:37
This is our MongoDB connection string.
7:42
So here is the DB setup. We are done.
7:46
We're going to go to next step. We're
7:47
going to try our key darker in our
7:50
sandbox environment.
7:56
Now it's time to run a key in our Docker
8:01
sandbox environment.
8:03
This is the command.
8:06
You can copy it out.
8:11
You may want to copy your angle DB's
8:15
connection string to here. Just replace
8:18
that part.
8:20
You do need to modify your keys
8:24
username. For example, you may want to
8:26
use admin and password. You may want to
8:29
use something strong.
8:33
For other things, you can keep as
8:35
default. This will be your docker run
8:38
command we're going to use.
8:41
In my previous videos, I keep using play
8:44
with Docker, but uh unfortunately
8:47
starting from March 1st, this play with
8:50
Docker sandbox environment is gone. It's
8:53
not available anymore. We can use it for
8:57
the lab purpose. I like to using another
9:01
sandbox environment I found from code
9:04
cloud. So this is also similar. You can
9:08
spin up Docker environment one hour or
9:12
at the most 2.5 hours here. So you can
9:16
just click any of them and then right
9:19
away they're going to spin up a
9:21
temporary docker environment for you
9:24
which you can play with. It's a similar
9:26
like a play with docker lab environment.
9:28
Um same thing you do able to see the
9:32
environment using a pine line and you do
9:36
able to see
9:39
CPU usage memory this kind of
9:42
information for us. We just throw our
9:46
docker run command in
9:52
in less than one minute. You should be
9:55
able to see the result. I couldn't find
9:57
the list image. We don't have a
10:01
command isn't right. So we have to
10:04
remove d-link So basically we
10:08
have a wrong command here. We need to
10:10
remove this part. I forgot that. Let's
10:13
try again.
10:16
Just make sure there's no other docker
10:19
running on the same name.
10:22
We're going to paste the command in.
10:24
This time they can be much faster since
10:25
they already pull the image.
10:29
You can see they're doing a connection.
10:32
They connected to the MongoDB server.
10:34
Start your server and they listening
10:37
30,000.
10:38
Okay, let's open a port.
10:41
So default is 80. We can put 30,00 open
10:45
port.
10:46
Perfect. Now let's trying to login. And
10:49
we put our username
10:52
admin
10:54
password 1 2 3 4.
11:01
Bum we are in. So that's how simple it
11:03
is to use it. You just need to add a
11:06
domain. For example, you want to check
11:09
your domain. I have just randomly title.
11:14
Just add it.
11:16
Once you add that you will get uh your
11:18
ID here ID. So you need to embed this
11:23
code script code. It's already copied.
11:26
So we can take a look the code here.
11:30
So that's the basically code. They're
11:32
going to tell you where to send the
11:33
traffic server here. They're going to
11:36
run this JavaScript once you load this
11:39
script.
11:41
So that's how it is. By default they are
11:44
not collecting
11:46
much information. So basically once you
11:49
run the code they probably only give you
11:52
views, visitors
11:54
and duration other than those pages
11:57
referral system device browser size
12:00
languages all those information will not
12:02
be collected. So you won't be able to
12:04
see that. So that's the default
12:08
settings.
12:10
That's pretty much for docker part and
12:14
we're going to go into next section
12:17
deploy using a render this cloud
12:20
platform.
12:25
Render platform probably is the best one
12:29
to deploy it for a key right now if you
12:33
want to get a free deployment. Zebra
12:36
used to be easiest way to deploy the
12:39
MongoDB and A key together with the
12:42
template. You do able to try that but uh
12:47
unfortunately you will get a
12:50
notification you need to upgrade to
12:52
developer plan which is $5 per month.
12:56
Used to be able to deploy it free just
12:59
before February 22nd.
13:03
I had it deployed at that time. So, so
13:07
we're gonna skip Zus deployment since
13:10
there's no free uh same thing on Nifi.
13:15
Um it won't be good anymore because it
13:20
doesn't work well. I tried it and you
13:24
will gave you an error after you
13:26
couldn't log in. It can be successfully
13:28
deployed but you won't be able to log
13:31
in. I can show you that part. Let's try.
13:35
You can put the whatever MongoDB
13:38
username, password, origin loss in. I
13:41
can give it quick try to show you.
13:46
We can use a MongoDB same one. Password
13:50
1 2 3 4 origin everywhere.
13:53
Auto origin. True.
13:56
Save and deploy. It seems very easy but
14:02
uh at the end because Liz is a
14:04
serverless platform it won't work. Same
14:08
thing on the verso even worse the
14:11
deployment won't be successful. You need
14:14
to manually change output directory then
14:18
make it working but at the end I tried
14:21
that at the end you will get the same
14:23
error message now it's ready now so we
14:27
can look at here it seems working but
14:30
you can log in
14:33
so that's the challenge I was facing um
14:36
you see this response not successful
14:38
receive status code I did Google and
14:42
using AI I trying to figure out how to
14:45
resolve issue. Basically um there's
14:47
nothing we can do because the platform's
14:50
limitation. This is this is serverless
14:52
platform and there's some big limitation
14:55
to get the AI working. So I gave up. I
14:59
don't think it's working. Then I just
15:01
delete it for this project since it's
15:05
not working well. If it's working that
15:08
will be nice but unfortunately not. So
15:11
whatever you need to try, you need to
15:14
make sure um that platform support
15:18
docker deployment. So if it doesn't
15:21
support Docker, it won't work. So I'm
15:23
going to go to show you the render now.
15:30
If the platform support um Docker
15:33
deployment, then it's working. So render
15:36
railway zeber all working. Fly.io IO
15:40
coip all works in certain way. Um but
15:45
render is completely free. So uh let's
15:48
why not using render to-do list. So
15:50
assuming you already have a render
15:52
account. I do have one. So I already
15:55
signed in already. It might asking you
15:58
of payment info but it doesn't have to
16:01
be do that. So we can just go into
16:04
create a new deployment. Deploying web
16:06
app web service. Here is a git provider.
16:08
Don't use uh your um key git repository
16:13
to do that. Just using existing image.
16:16
So for existing image then you can go
16:20
back to docker run command find out the
16:22
image just copy paste in here.
16:27
They will find it automatically
16:29
connect to it. You can name it Aki.
16:35
Don't forget choose from starter to
16:37
free. Free is enough for this small
16:41
application and that MongoDB is running
16:45
out of from this platform. So it's much
16:47
easier. It does need to require
16:51
environment variables
16:53
that what we can get it from here. So we
16:56
do need a couple of things. Okay.
16:59
MongoDB connection string
17:02
username and password
17:05
there another parameter I want you to
17:09
added in
17:11
a key allow origin just put a star allow
17:16
anywhere I know there's a certain
17:18
security concerns but for you can add a
17:22
specific for your domain here but um
17:25
just for demo purpose I'm going to add a
17:27
star here.
17:30
Well, nothing else you need to change.
17:32
Then you can just deploy web services.
17:35
You will get the subdomain from on
17:38
render.com.
17:40
It does support using your custom
17:43
domain. So once you deploy it, you can
17:46
add your own custom domain. In that way,
17:49
you can have your analytic AI website
17:52
running on your domain. Your service is
17:55
live. And uh here is the URL. Let's log
17:59
in.
18:00
Perfect. No problem at all. So now we
18:05
got our AI website up and running. Now
18:08
we just need to add domains in here. So
18:14
we already add one since we added in
18:16
previous testing in the docker. So the
18:19
information is there. We just read that.
18:23
So we can copy it and you can add into
18:26
your website. Before uh end of this
18:30
video, I just want you to show one thing
18:32
here. So this is the code. If you do
18:36
need to check detailed information, you
18:39
should be able to add one thing in, then
18:43
you can check in much more information.
18:46
You should be able to find it from my uh
18:48
blog post. So that's the code. You may
18:51
want to add it in date a key options
18:56
detailed true. So basically they asking
18:59
when they run this tracking code they're
19:01
collecting more detailed information
19:04
personalized information back to your
19:06
database and then they present it. One
19:10
thing you do need to know that a key
19:14
one thing you do need to know how does
19:16
the ar work um how they count views. So
19:21
there's a unique site view which is
19:24
different. So you do need to read it.
19:26
You will find the views is much less
19:30
than the Google Analytic or other
19:33
analytic tools because they only
19:37
checking the unique site view. So which
19:40
is much less for example just one day if
19:44
you refresh the page a couple of times
19:47
they just count just one. Also if you
19:50
visit different pages three pages of a
19:53
domain the count just one. So this will
19:57
make views much less number comparing
20:01
[snorts] to other analytic tools. But
20:04
it's also give you exactly idea how many
20:08
people how many real person visit your
20:11
website. So that's all for this video. I
20:14
hope you got some good ideas how to
20:17
build your own analytic tour website. If
20:20
you have any questions, comment this
20:23
video. I will try to reply back as soon
20:26
as possible. Hope you like this video.
20:28
Give me a thumb up if you do. Also,
20:30
subscribe my channel if you haven't. See
20:33
you in my next one.
20:40
Down my heat.
20:43
[music]
20:49
>> [music]
#Science
