Self-hosted service
teddysun/across avatar
teddysun/across

Seven shell scripts named across, plus two marked DO NOT USE

Across the Great Wall we can reach every corner in the world

5,373 stars2,186 forksShellApache-2.0

At a glance

What is it?
teddysun/across is a grab bag of server maintenance scripts (WireGuard, BBR kernel, KMS, speed tests, encrypted backups) where each entry gets one description line, no flags, no config schema and no rollback.
Who is it for?
Across is a shortcut shelf rather than a toolkit, which suits anyone who already knows what wireguard.sh, bbr.sh and backup.sh will change on their own box and would rather use the author's script than write one. Leave it alone if you need documented flags, a config schema, a version to roll back to, or proof that a script finished correctly.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Activity is slowing. The repository last received commits 7 months ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • teddysun/across5,373 ★ · +2
Star history
Repository2026-09-232026-11-14
teddysun/across5.4k5.4k

2 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Seven scripts share the name across

The repository is not a VPN client and not a firewall. It is a flat directory of shell scripts, and the name is a pun on crossing a network boundary: the project description reads Across the Great Wall we can reach every corner in the world, and the primary language is Shell.

Seven entries carry a description and an intro link, wireguard.sh, bbr.sh, kms.sh, bench.sh, backup.sh, ftp_upload.sh and unixbench.sh. Cloning brings you those scripts plus the packaging directories deb/, docker/ and rpm/, sitting next to LICENSE and README.md, but no sample configuration and no dependency manifest at the top level.

bash
git clone https://github.com/teddysun/across.git
cd across

Every intro link points at teddysun.com rather than a file in the repository, so the explanation you read after cloning lives in a blog post, not next to the code you just downloaded.

wireguard.sh and bbr.sh are one line each, with nothing to undo

wireguard.sh gets the longest description in the whole project and still fits in a sentence: This is a shell script for configure and start WireGuard VPN server. bbr.sh gets Auto install latest kernel for TCP BBR. Neither entry names a WireGuard config path, a key generation step, a distribution the script was tried on, a single flag, or any way to check what the script changed after it finished.

bbr.sh is the sharper problem, because its promise is the latest kernel with no version pinned. Which kernel lands on the machine depends on what the package source serves at the moment you run it, and the entry does not say what happens to the running kernel or whether a reboot belongs in the flow. If the result misbehaves, nothing in the repository records the previous version or a path back to it. Record that version yourself before you start, not after the box stops booting.

kms.sh arrives as a script and as a container, with no version on either

kms.sh is described as Auto install KMS Server, and its entry adds one extra pointer: a KMS Server Docker Image at hub.docker.com/r/teddysun/kms. The activation server can therefore reach your host two ways, a script that installs it onto the machine and a container image you pull and run.

The tree also holds a kms entry, a kms-debian entry and a docker/ directory, which suggests the image has build context in the repository, though nothing says which of the two install paths is the current one. Neither the image reference nor the script carries a version tag, so a deployment that works today leaves no recorded version to fall back on when the upstream moves.

backup.sh and ftp_upload.sh stop until you edit a config

Two entries carry the same warning in the same words: You must modify the config before run it. It is the only operational instruction in the project that promises a failure, and it appears for both backup.sh and ftp_upload.sh.

What it does not hand you is the config itself. No file name, no variable list, no example block, and nothing at the top level that looks like a template. backup.sh is the more demanding of the two because it also decides the scope of the job, MySQL or MariaDB databases plus files and directories, and that choice has to be expressed somewhere in the file you are told to edit. Plan on opening the script to discover the variable names, and expect the first run to stop if you skip that step.

The optional paths in backup.sh lean on openssl, rclone and ftp

backup.sh lists optional steps, and each one hangs off a command that has to exist on the host already.

bash
openssl
rclone
ftp

The backup file is encrypted with AES-256-CBC and a sha256 message-digest, which depends on openssl. Transfer to a cloud drive depends on rclone, transfer to an FTP server depends on the ftp command, and deleting the remote copy afterwards is optional in its own right. Each is marked (option) in the listing, which tells you it can be turned off but says nothing about what happens when the command is missing.

bench.sh and unixbench.sh print numbers with no baseline

bench.sh is an auto test for I/O, upload and download speed. unixbench.sh auto installs unixbench and runs the test. Neither entry shows sample output, states which figures count as good on your hardware, or names the region a transfer test runs from, which matters for anything measuring download speed across a network boundary.

The result is a number with nothing attached to it. The only usable comparison you can build is running the same script twice under the same conditions and diffing the two outputs yourself, and the entry gives no guidance on keeping conditions steady. unixbench.sh stacks an install step on top of the measurement, so a failed install and a slow disk are easy to confuse when you read the output later.

l2tp.sh and pptp.sh stay in the tree marked DO NOT USE

Two entries have nothing beyond a parenthetical: l2tp.sh(Deprecated, DO NOT USE) and pptp.sh(Deprecated, DO NOT USE). They are still in the top level directory, so anything that walks the repository for shell files will pick them up. The rest of the tree is just as uneven: InstallNET.sh, deb/, rpm/, docker/, kms and kms-debian carry no description at all.

There are no GitHub releases to fall back on, the default branch is master, the licence is Apache-2.0, and the last recorded push is 2026-04-04. The copyright line still reads 2013-2021. Nothing marks the seven described scripts as deprecated, and nothing promises they are current either, so those two labels are the only maintenance signal the repository offers.

Editorial conclusion

Across is a shortcut shelf rather than a toolkit, which suits anyone who already knows what wireguard.sh, bbr.sh and backup.sh will change on their own box and would rather use the author's script than write one. Leave it alone if you need documented flags, a config schema, a version to roll back to, or proof that a script finished correctly. Before running anything, read the script itself, confirm openssl, rclone or ftp exist if you want those paths active, and write down the current kernel version before bbr.sh touches it.

Frequently asked questions

What does teddysun/across put on a Linux server?

Seven described shell scripts: wireguard.sh, bbr.sh, kms.sh, bench.sh, backup.sh, ftp_upload.sh and unixbench.sh. Two more, l2tp.sh and pptp.sh, carry the label Deprecated, DO NOT USE.

Which teddysun/across scripts need a config edit before the first run?

backup.sh and ftp_upload.sh. Both carry the note You must modify the config before run it, and the repository ships no sample config file at the top level, so the variable names have to come from reading the script.

Does teddysun/across document a rollback for bbr.sh or wireguard.sh?

No. Each entry is a single description line, so no flags, prerequisites, verification steps or undo procedure are given for the kernel install or the VPN server setup.

What external commands does backup.sh depend on?

openssl for the AES-256-CBC encryption with a sha256 message-digest, rclone for the drive transfer, and the ftp command for the FTP transfer. All three are marked optional in the script listing.

Does teddysun/across publish tagged releases?

No. The repository has no GitHub releases, the default branch is master, the licence is Apache-2.0, and the last recorded push is dated 2026-04-04.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. Project website
  4. README
  5. teddysun/across on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/teddysun-across.svg)](https://hysenlabs.com/projects/teddysun-across)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/teddysun-across.svg)](https://hysenlabs.com/projects/teddysun-across)

Was this useful?