Create a Tiktok style Web App Using Heroku or Self Hosted Cloud Docker Server or some cloud free virtual hosting serviec. 

XJJ is a project forked from JMWpower/xiaojiejie. Most code keeps same, but the interface has been translated into English. It supports both PC and mobile devices using two different html files.  The main purpose is to give you an Tiktok feeling example to show videos online in your browser. 
It is writen by html and php language. As long as your web server supports php, you can dump all files into a folder to run it. 
You also can use docker to deploy it from scratch. 

php-nginx docker

Lets use this php-nginx docker as our base docker image to deploy XJJ project. 
Docker: https://hub.docker.com/r/trafex/php-nginx
Usage Examples:
docker run -p 80:8080 trafex/php-nginx
docker run -p 80:8080 -v ~/my-codebase:/var/www/html trafex/php-nginx

Make Your Own XJJ Image

We are going to use this php-nginx docker to deploy XJJ github code and save it as our own image to use it later. 
Here is a command to expose port 8080, and run it in background 
docker run -d -p 8080:8080 trafex/php-nginx2
Log into docker:
docker exec -it <container name> sh3
You might need root user to log in to be able to modify files in the docker.

docker exec -it --user root xjj sh

Outputs for our deployment of XJJ Github code. 


node1] (local) [email protected] ~
$
docker exec -it –user=root epic_nobel /bin/sh
/var/www/html # 
/var/www/html # 
/var/www/html # apk update
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz
v3.16.2-210-g84cfb9e03b [https://dl-cdn.alpinelinux.org/alpine/v3.16/main]
v3.16.2-212-g313c9fb349 [https://dl-cdn.alpinelinux.org/alpine/v3.16/community]
OK: 17033 distinct packages available
/var/www/html # apk add git
(1/1) Installing git (2.36.2-r0)
Executing busybox-1.35.0-r17.trigger
OK: 128 MiB in 84 packages
/var/www/html # git clone https://github.com/51sec/xjj/
Cloning into ‘xjj’…
remote: Enumerating objects: 364, done.
remote: Counting objects: 100% (63/63), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 364 (delta 38), reused 14 (delta 14), pack-reused 301
Receiving objects: 100% (364/364), 6.34 MiB | 24.80 MiB/s, done.
Resolving deltas: 100% (178/178), done.
/var/www/html # ls
index.php  test.html  xjj

Copy all files from sub folder to up level folder and remove xjj sub folder:
cp -r /var/www/html/xjj/* /var/www/html
rm -f -r xjj

Change default index.php name to something else:

mv index.php info.php4
Once you got your XJJ up and running as the way you want, you can tag the image then save it to your docker hub account:

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don’t have a Docker ID, head over to https://hub.docker.com to create one.
Username: johnyan2
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[node1] (local) [email protected] ~
$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS                   PORTS                    NAMES
0709187f6de8   trafex/php-nginx   “/usr/bin/supervisor…”   7 minutes ago   Up 7 minutes (healthy)   0.0.0.0:8080->8080/tcp   beautiful_kapitsa
[node1] (local) [email protected] ~
$ docker commit beautiful_kapitsa xjj
sha256:bfe9df406ac46e4e810ef5564a34f50be8b9589b4d4c054fc558ef79e27ba999
[node1] (local) [email protected] ~
$ docker image list
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
xjj                latest    bfe9df406ac4   5 seconds ago   135MB
trafex/php-nginx   latest    3c715d61cf62   2 weeks ago     112MB
[node1] (local) [email protected] ~
$ docker tag xjj johnyan2/xjj:latest
[node1] (local) [email protected] ~
$ docker push johnyan2/xjj:latest
The push refers to repository [docker.io/johnyan2/xjj]
39fb7fab2513: Pushed 
4214a3c20885: Mounted from trafex/php-nginx 
dd2d315098b6: Mounted from trafex/php-nginx 
b6a2073595e4: Mounted from trafex/php-nginx 
69aaabf84209: Mounted from trafex/php-nginx 
30a01461c06d: Mounted from trafex/php-nginx 
7676824158d7: Mounted from trafex/php-nginx 
563d480ebb0d: Mounted from trafex/php-nginx 
c5da130154cc: Mounted from trafex/php-nginx 
0c7d93256a9b: Mounted from trafex/php-nginx 
994393dc58e7: Mounted from trafex/php-nginx 
latest: digest: sha256:f52267b7f90e059203bd352d455aa18337f201d4649f96149cc46e7ea7e4b65c size: 2610
[node1] (local) [email protected] ~
$
Check the docker image from : https://hub.docker.com/repository/docker/johnyan2/xjj
Docker image: johnyan2/xjj
Docker image site: https://hub.docker.com/repository/docker/johnyan2/xjj

Steps to Deploy to Virtual Hosting Service

TBD

Deploy Github Project 51sec/XJJ to Heroku

Github page: https://github.com/51sec/xjj

TBD

Collecting Video URLS

curl https://pf129.com/xjj/get/get1.php -w “\n” >> get1.txt
crontab -e
* * * * * curl https://pf129.com/xjj/get/get1.php -w “\n” >> get1.txt
Note: every minute.

Videos

 

References

  • Docker image site: https://hub.docker.com/repository/docker/johnyan2/xjj
  • Github: https://github.com/51sec/xjj
  • Demo: http://xjj.51sec.org/

By netsec

Leave a Reply