diff --git a/.gitignore b/.gitignore
index f09cd80e92105e013c269418947e1ae728c67063..04aa2b084ddc6d8d1b58fc698e19b2ed5282f148 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,7 @@
-__pycache__
 docs/_build/
+dist/
+
+*.egg-info
+__pycache__
 *.pyc
 *.pyo
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..ddeba47cca1f6e1d5f54300ce623c48cce9cefdc
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,25 @@
+import setuptools
+
+with open('README.md', 'r', encoding='utf-8') as f:
+	long_description = f.read()
+
+setuptools.setup(
+	name='ldapserver',
+	version='0.0.1.dev0',
+	author='Julian Rother',
+	author_email='python-ldapserver@jrother.eu',
+	description='LDAP server request handler',
+	long_description=long_description,
+	long_description_content_type='text/markdown',
+	url='https://git.cccv.de/uffd/python-ldapserver',
+	classifiers=[
+		'Programming Language :: Python :: 3',
+		'Development Status :: 2 - Pre-Alpha',
+		'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
+		'Operating System :: OS Independent',
+		'Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP',
+	],
+	package_dir={'': 'src'},
+	packages=setuptools.find_packages(where='src'),
+	python_requires='>=3.9',
+)