README.md 10.5 KB
Newer Older
1
<div align="center">
Daniel Wolf's avatar
Daniel Wolf committed
2
  <a href="" rel="noopener">
3
4
  <img width=200px height=200px src="app/src/main/res/mipmap-xxhdpi/ic_launcher.png" alt="Project logo"></a>
</div>
Daniel Wolf's avatar
Daniel Wolf committed
5

6
7
8
<div align=center>
    <h3 align="center">Nebulo</h3>
</div>
Daniel Wolf's avatar
Daniel Wolf committed
9
10
11
12
<div align="center">

  [![Apk size](https://img.shields.io/badge/Apk%20file%20size-4.7%20MB-blue)]() 
  [![License](https://img.shields.io/badge/license-GPLv3-blue.svg)](/LICENSE)
Daniel Wolf's avatar
Daniel Wolf committed
13
14
15
16
  <a href="https://weblate.frostnerd.com/engage/nebulo/?utm_source=widget">
    <img src="https://weblate.frostnerd.com/widgets/nebulo/-/svg-badge.svg" alt="Übersetzungsstatus" />
  </a> 
[![pipeline status](https://git.frostnerd.com/PublicAndroidApps/smokescreen/badges/master/pipeline.svg)](https://git.frostnerd.com/PublicAndroidApps/smokescreen/commits/master)
Daniel Wolf's avatar
Daniel Wolf committed
17
18
19
20
21
</div>

---

# About
22
Nebulo is a free, open-source, non-root and small sized DNS changer for Android utilizing dns-over-https and dns-over-tls to bring privacy and security to your phone.
Daniel Wolf's avatar
Daniel Wolf committed
23
It is fast, contains no ads or tracking and offers a lot of flexibility.
Daniel Wolf's avatar
Daniel Wolf committed
24
Look below for [installation instructions](#installation).
Daniel Wolf's avatar
Daniel Wolf committed
25

Daniel Wolf's avatar
Daniel Wolf committed
26
27
# My mission
My mission is to provide access to dns-over-tls and dns-over-https as a tool against censorship and tracking. Many countries block controversial or government-critical websites using DNS which can possibly be circumvented using either of those protocols.
28
29
30
31
32
The second topic, tracking, is nearly as important as the topic of censorship. Many ISPs use their own DNS servers as a way of tracking their users. Using DoH/DoT puts an end to this by encrypting your dns queries.

# How it works
Nebulo uses the VPN API of the Android system to create a dummy VPN which intercepts all packets for the dns servers of your device. This dummy VPN is __not__ a real VPN and does not tunnel your packets - it only handles dns packets. As only one VPN can be activate at any given time you have to decice between using Nebulo or a real VPN.

Daniel Wolf's avatar
Daniel Wolf committed
33
## Non-VPN mode
Daniel Wolf's avatar
Daniel Wolf committed
34
Look in the [FAQ](FAQ.md).
Daniel Wolf's avatar
Daniel Wolf committed
35

36
37
38
39
## What this is based on
Nebulo is a completely original piece of software. It doesn't use any other dependency under the hood for the dns capabilities. Check the [dependencies](https://git.frostnerd.com/PublicAndroidApps/smokescreen/blob/master/app/build.gradle#L100) to see what is used for everything build around DoH/DoT.

## Incompatibilities, compatibilities and possible problems 
Daniel Wolf's avatar
Daniel Wolf committed
40
- As mentioned no other VPN can be active when Nebulo is running (at least when not running in Non-VPN mode mentioned above)
41
42
- Nebulo works fine with non-VPN firewalls in place (such as AFWall+), but changes in firewall profiles [could break the VPN](https://git.frostnerd.com/PublicAndroidApps/smokescreen/issues/84), requiring a restart of Nebulo.
- Other means of ad-blocking, like modifying the `/etc/hosts` file or the `AdAway` app go hand in hand with Nebulo as well. 
Daniel Wolf's avatar
Daniel Wolf committed
43
44
45
46
47
48
49
50
51
52
53
54
55
    - The AdGuard app might cause Nebulo not to receive DNS queries

## Core features
The app consists of a few core features:
 * Dns forwarding using dns-over-https and dns-over-tls
 * A customizable in-memory DNS cache
    * You can configure minimum caching time and default caching times
 * A list of servers with a lot of default entries
    * You can add your own servers as well
 * A DNS speed test
 * Query logging
 * DNS rules, where you can specify your own IP addresses for hosts
    * Rules can be imported from files and URLs (supports 4 different formats)
56
    * You can block hosts by using 0.0.0.0 and ::1 as targets (If you check the box "Block this host" those targets are automatically used. You don't have to do anything else.)
Daniel Wolf's avatar
Daniel Wolf committed
57
    * The DNS rules prevent CNAME cloaking
Daniel Wolf's avatar
Daniel Wolf committed
58
59
60
61
62
 * Highly customizable settings
    * Disable IPv4/IPv6
    * Allow captive portals
    * Allow search domains on the current network
    * ... And more
63

Daniel Wolf's avatar
Daniel Wolf committed
64
65
66
# FAQ
For a growing collection of frequenty asked questions (FAQ), take a look [here](FAQ.md).

67
68
69
70
# Help wanted
Translations are important to reach as broad of an audience as possible and for non-english speakers to be able to use the app to it's full extent.
Head over to the [translation guide](TRANSLATING.md) to see how you can help!

Daniel Wolf's avatar
Daniel Wolf committed
71
# Installation
Daniel Wolf's avatar
Daniel Wolf committed
72
The app is distributed over the play store, a custom F-Droid repo and as an .apk file.
Daniel Wolf's avatar
Daniel Wolf committed
73

Daniel Wolf's avatar
Daniel Wolf committed
74
## Play store
Daniel Wolf's avatar
Daniel Wolf committed
75
Go to the [play store](https://play.google.com/store/apps/details?id=com.frostnerd.smokescreen) to download the app.
Daniel Wolf's avatar
Daniel Wolf committed
76
77
78
79
80

## F-Droid
1. Add the repository on your F-Droid app by clicking [this link](https://fdroid.frostnerd.com/fdroid/repo?fingerprint=74BB580F263EC89E15C207298DEC861B5069517550FE0F1D852F16FA611D2D26).
    - Or add it yourself, fdroid.frostnerd.com/fdroid with fingerprint 74BB580F263EC89E15C207298DEC861B5069517550FE0F1D852F16FA611D2D26
    - You can use the [QR-Code as well](material/fdroid_qr.jpg) .
Daniel Wolf's avatar
Daniel Wolf committed
81
    - I recommend using [Aurora Droid](https://gitlab.com/AuroraOSS/auroradroid) , it contains the repository by default
Daniel Wolf's avatar
Daniel Wolf committed
82
2. (Optional, for older versions of Nebulo) Add the F-Droid archive by clicking [this link](https://fdroidarchive.frostnerd.com/?fingerprint=74BB580F263EC89E15C207298DEC861B5069517550FE0F1D852F16FA611D2D26).
Daniel Wolf's avatar
Daniel Wolf committed
83
    -  Or add it yourself, fdroidarchive.frostnerd.com with fingerprint 74BB580F263EC89E15C207298DEC861B5069517550FE0F1D852F16FA611D2D26
Daniel Wolf's avatar
Daniel Wolf committed
84
85
86
87
3. Update your repositories (by pulling down to refresh)
4. Search for Nebulo
5. Download the app.
6. Don't forget to check for updates sometimes.
Daniel Wolf's avatar
Daniel Wolf committed
88
89
90
91


## Binary
The file is distributed as .apk file in two places:
Daniel Wolf's avatar
Daniel Wolf committed
92
- In the [telegram group](https://nebulo.app/community)
Daniel Wolf's avatar
Daniel Wolf committed
93
94
95
96
97
98
- In the automated build system (CI) here in GitLab. [Click here](https://git.frostnerd.com/PublicAndroidApps/smokescreen/-/jobs/artifacts/master/raw/app/build/outputs/apk/normal/release/app-normal-release.apk?job=build_release) to download the latest signed build.
    - The latest signed build isn't always the current release, keep in mind that those are merely signed development builds.
    
# Community
Want to be always up-to-date on the development of this app? Looking for a way to contact the developer?

Daniel Wolf's avatar
Daniel Wolf committed
99
100
Join our [Telegram group](https://nebulo.app/community)!
(Alternatively [the channel](https://nebulo.app/updateChannel) , which contains only updates and nothing else)<br>
Daniel Wolf's avatar
Daniel Wolf committed
101

Daniel Wolf's avatar
Daniel Wolf committed
102
I also have a XDA-thread [here](https://forum.xda-developers.com/t/app-5-0-nebulo-dns-changer-for-doh-dot-against-censorship-open-source-no-root.4156645/).
Daniel Wolf's avatar
Daniel Wolf committed
103
104
105

# Issues, feature requests and questions
Have an idea, question or encountered a bug? Feel free to create an issue [right here in GitLab](https://git.frostnerd.com/PublicAndroidApps/smokescreen/issues).
Daniel Wolf's avatar
Daniel Wolf committed
106
Alternatively use the issue tracker in the mirror over on GitHub: https://github.com/Ch4t4r/Nebulo
Daniel Wolf's avatar
Daniel Wolf committed
107
108
109
110
111
112
113
114
115
116
117
118
119

# Developer contact
There are several ways for you to contact the developer:

**E-Mail**: [daniel.wolf@frostnerd.com](mailto:daniel.wolf@frostnerd.com)

**Telegram**: [@Ch4t4r](https://t.me/Ch4t4r)

**Skype**: [daniel38452](skype:daniel38452)

# Credits
A list of some extraordinary people who contributed to this project:
 - App icon and notification icon by [RKBDI](http://dribbble.com/rkbdi).
Daniel Wolf's avatar
Daniel Wolf committed
120
121
 - Turkish translation by Kemal Oktay Aktoğan
 - Russian translation by [bruleto](https://t.me/bruleto)
122
 - Dutch translation by Bas Koedijk
Daniel Wolf's avatar
Daniel Wolf committed
123
124
 - Portuguese translation by Rafael W. Bohnenberger
 - Indonesian translation by Gloeyisk
Daniel Wolf's avatar
Daniel Wolf committed
125
126
 - Catalan translation by Daniel Alomar
 - Spanish translation by Victor Bayas
Daniel Wolf's avatar
Daniel Wolf committed
127
128
129
130
<br/>
<br/>

**Want to see your name here? Feel free to contribute!**
Daniel Wolf's avatar
Daniel Wolf committed
131
132
133
 
 
# License
Daniel Wolf's avatar
Daniel Wolf committed
134
This work is licensed under the GNU GPLv3 License. Different license-agreements can be made with the developer for parts of the app, if needed.
Daniel Wolf's avatar
Daniel Wolf committed
135
136


Daniel Wolf's avatar
Daniel Wolf committed
137
Copyright (C) 2021   Daniel Wolf
Daniel Wolf's avatar
Daniel Wolf committed
138

139
140
<br>
<br>
Daniel Wolf's avatar
Daniel Wolf committed
141
Please be aware that I'm not going to tolerate exact copies of this app on the Play Store. This project took a lot of work, not only from me, but many alpha/beta testers and translators. Copying is - per the license - generally allowed, but uploading a nearly identical version to the Play Store would be impersonation as per Google policy.
142

Daniel Wolf's avatar
Daniel Wolf committed
143
144
145
146
147
148
149
150
151
# Third-party content
This work contains third-party content, namely:
- [sentry-java](https://github.com/getsentry/sentry-java) for crash-reporting
   - License: [BSD 3-Clause revised ](https://opensource.org/licenses/BSD-3-Clause)
- [Material Design Icons](https://material.io/tools/icons/)
   - License: [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
   - The notification and launcher icons are remixes of the cloud icon
- [Font Awesome icons](https://fontawesome.com/)
   - License: Font Awesome Pro License, held by Daniel Wolf
Daniel Wolf's avatar
Daniel Wolf committed
152
   - All icons used in Nebulo are also available under the [free license](https://fontawesome.com/license/free). Attribution is required if you don't hold a pro license (Nebulo does so in the credits)
153
154
- [Weblate](https://weblate.org) for managing translations
   - License: GPLv3
155
156
- [FABProgressCircle](https://github.com/JorgeCastilloPrz/FABProgressCircle) for showing a loading indicator around floating action buttons
   - License: [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
Daniel Wolf's avatar
Daniel Wolf committed
157
- [LeakCanary](https://github.com/square/leakcanary) for finding memory leaks
Daniel Wolf's avatar
Daniel Wolf committed
158
   - License: [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
159
- [LeakSentry](https://github.com/square/leakcanary/tree/master/leakcanary-leaksentry) for finding memory leaks
Daniel Wolf's avatar
Daniel Wolf committed
160
   - License: [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
161
- [Gson](https://github.com/google/gson)
Daniel Wolf's avatar
Daniel Wolf committed
162
   - License: [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
163
- [OkHttp](https://github.com/square/okhttp)
Daniel Wolf's avatar
Daniel Wolf committed
164
165
166
167
168
   - License: [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
- [AppIntro](https://github.com/AppIntro/AppIntro)
   - License: [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
- [MiniDNS](https://github.com/MiniDNS/minidns)
   - License: Free choice of [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0), [WTFPL](https://github.com/MiniDNS/minidns/blob/master/LICENCE_WTFPL) and [GPL2.1](https://github.com/MiniDNS/minidns/blob/master/LICENCE_LGPL2.1)
Daniel Wolf's avatar
Daniel Wolf committed
169
170
171

# Cloning
Feel free to clone this software. However, there are a few things to notice:
Daniel Wolf's avatar
Daniel Wolf committed
172
173
- This app uses some of my own libraries. Those are OSS as well, you can find the URLs in the `build.gradle`.
   - These libraries are distributed as pre-built binaries using an Nexus3 server. Public credentials are contained in the root `build.gradle`
Daniel Wolf's avatar
Daniel Wolf committed
174
   - Alternatively, replace the dependencies (`implementation 'com.frostnerd.utilskt:....`) with git sub-modules (`implementation project(...)`) after cloning the libraries.
Daniel Wolf's avatar
Daniel Wolf committed
175
- Nebulo uses icons from Font Awesome covered under their free license. Nebulo gives attribution in the Credits section.